Batch Script Programming - Как разрешить пользователю выбирать файл по номеру из списка файлов в папке? - PullRequest
4 голосов
/ 18 января 2012

У меня есть папка с N файлами. Я пытаюсь понять, как сделать следующее:

Отображение списка файлов с номерами рядом с ними для выбора:

01 - FileA.pdf
02 - FileB.pdf
03 - FileC.pdf
...

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

1 Ответ

11 голосов
/ 19 января 2012

Следующий пакетный скрипт должен делать то, что вы хотите, объяснение приведено ниже:

@ECHO OFF
SET index=1

SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
   SET file!index!=%%f
   ECHO !index! - %%f
   SET /A index=!index!+1
)

SETLOCAL DISABLEDELAYEDEXPANSION

SET /P selection="select file by number:"

SET file%selection% >nul 2>&1

IF ERRORLEVEL 1 (
   ECHO invalid number selected   
   EXIT /B 1
)

CALL :RESOLVE %%file%selection%%%

ECHO selected file name: %file_name%

GOTO :EOF

:RESOLVE
SET file_name=%1
GOTO :EOF

Прежде всего этот скрипт использует что-то вроде массива для хранения имен файлов. Этот массив заполняется в FOR -loop. Тело цикла выполняется один раз для каждого имени файла, найденного в текущем каталоге.

Массив фактически состоит из набора переменных, начинающихся с file и с добавленным числом (например, file1, file2. Число сохраняется в переменной index и увеличивается на каждой итерации цикла . В теле цикла также выводятся номер и имя соответствующего файла

В следующей части команда SET /P просит пользователя ввести число, которое затем сохраняется в переменной selection. Вторая команда SET и последующие IF используются для проверки того, будет ли введенное число давать действительный индекс массива, путем проверки переменной fileX.

Наконец, подпрограмма RESOLVE используется для копирования содержимого переменной, образованной file + введенным числом в selection, в переменную с именем file_name, которую затем можно использовать для дальнейшей обработки.

Надеюсь, что дает некоторые подсказки.

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