Пакет: Как прокрутить файлы для чтения в переменную? - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь заставить его прокрутить каталог и представить новую переменную, когда пользователь отвечает «N».Я все понял, кроме как перейти к следующей переменной.

cd "C:\Test"
for /r %%F in (*) do SET Show=%%~NF
echo %Show%
echo.
SET /P Continue=Continue?(Y/N)
if /I "%Continue%" EQU "y" goto :Run
if /I "%Continue%" EQU "n" goto :Start

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Это то, что вам нужно:

For /R "C:\Test" %%A In (*) Do (Choice /M "%%~nA"
    If Not ErrorLevel 2 (Set "Show=%%~nA" & GoTo Run))
Exit /B
:Run
Echo Running against %Show%
Pause

В качестве альтернативы, если вы хотите вернуться к циклу после запуска с именем файла, затем используйте Call вместо GoTo:

For /R "C:\Test" %%A In (*) Do (Choice /M "%%~nA"
    If Not ErrorLevel 2 Call :Run "%%~nA")
Exit /B
:Run
Set "Show=%~1"
Echo Running against %Show%
Pause
0 голосов
/ 28 января 2019

Если вы хотите прокрутить каталог и запросить у пользователя имя файла, а затем выбрать, выбрать его или продолжить, то ниже вам поможет.

Во-первых, мы можем использовать dir /b /a:d дляотображать только каталоги (папки) в текущем каталоге.Используя кодовый блок ( & ), мы можем поместить пакетный скрипт в цикл for.Ради вас, мы можем использовать команду CHOICE, чтобы предложить продолжить цикл или сохранить текущую папку в строку и что-то с ней сделать.

ScrollTreeWithPrompt.bat:

@echo off
setlocal EnableDelayedExpansion

Rem | Configuration
Set "MainDir=C:\Test"

Rem | Get Each Project Folder
for /f "tokens=*" %%A in ('dir "!MainDir!\" /b /a:d') do (

    Cls
    Echo Current Folder: %%A
    echo(
    CHOICE /M "Continue?"

    Rem | Check for "N" - If so Set String & goto
    IF "!ERRORLEVEL!"=="2" (
        Set "Choice=%%A"
        GOTO Run
    )
)

Rem | No Further Results
Cls
Echo Warning: No further folders found.

pause>NUL
goto :EOF

:Run
Cls
echo Currently selected: !MainDir!\!Choice!

pause>NUL
goto :EOF

Я оставил несколько Rem комментариев в сценарии, чтобы помочь вам в этом.Чтобы получить дополнительную справку по командам, введите в командной строке следующую команду:

  • choice /?
  • set /?
  • for /?
  • goto /?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...