一、需求分析
一个目录下有好多文件,扩展名为bak,我想用批处理实现列表显示当前目录下的文件,并提供给用户一个选择, 如显示
1:a.bak
2:b.bak
3:c.bak
当用户按1则能知道用户选择的a.bak,如果用户按3则知道用户选择的c.bak
二、代码使用注意
不要把下面的批处理放在目标文件夹内,生成的临时列表文件也不要制定存放在目标文件夹内。
三、代码
@echo off
rem 设置查询的路径
set sp=c:\\test
rem 设置临时存放列表的文件
set tf=c:\\tmpList.txt
rem 列举查询路径下的所有文件并加上编号后写入临时存放列表的文件
dir /b /a-d %sp%|findstr /N ".">%tf%
:Lstart
cls
set fcount=0
set fstate=NO
rem 在屏幕上显示出编号的列表,获取文件列表最大数值
for /f %%a in (%tf%) do (
echo %%a
set /a fcount+=1
)
echo.
set /p fn=请选择文件编号(按X退出):
if /i "%fn%" equ "x" goto :eof
rem 判断选择的数值是否在范围内,如果不在就跳转重新输入,按X退出
if "%fn%" leq "%fcount%" (if "%fn%" geq "1" (set fstate=OK))
if %fstate% neq OK goto :Lstart
rem 判断输入的编号并从列表中得到相应的文件名显示出来
for /f "tokens=1,2 delims=:" %%e in (%tf%) do (
if "%%e" equ "%fn%" (echo.&echo.&echo 你选择了文件: %%f)
)