我有一个包含N个文件的文件夹。我正在试图弄清楚如何执行以下操作:
显示旁边有数字的文件列表供选择:
01 - FileA.pdf
02 - FileB.pdf
03 - FileC.pdf
...
然后,让用户通过键入相应的数字来选择他想要使用的文件。我不知道从哪里开始这个。
答案 0 :(得分:11)
以下批处理脚本应该执行您想要的操作,解释如下:
@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
- 循环中。对于在当前目录中找到的每个文件名,循环体执行一次。
数组实际上由一组变量组成,所有变量都以file
开头并附加一个数字(如file1
,file2
。数字存储在变量{{1}中并且在每次循环迭代中递增。在循环体中,该数字和相应的文件名也被打印出来
在下一部分中,index
命令要求用户输入一个数字,然后将其存储在变量SET /P
中。第二个selection
命令和以下SET
用于检查输入的数字是否通过检查IF
变量来提供有效的数组索引。
最后,fileX
子例程用于将RESOLVE
形成的变量的内容+ file
中输入的数字复制到名为selection
的变量,然后可以用于进一步处理。
希望能提供一些提示。