一、需求分析
一个目录下有好多文件,扩展名为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) ) |