[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 为何批处理For里面只能执行一次?

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. REM list the bin files
  4. :start
  5. dir /a-d /b .\bin\*.*>files.txt
  6. set /a flag=0
  7. for /f %%i in (files.txt) do (
  8. echo %%i
  9. set /a flag=flag+1
  10. set device!flag!=%%i
  11. )
  12. cls
  13. if !flag!==0 echo No files found. & pause & goto start
  14. if !flag! GTR 1 echo List the test files.
  15. set /a flag2=1
  16. for /f  %%i in (files.txt) do (
  17. echo !flag2!. %%i
  18. set /a flag2=flag2+1
  19. )
  20. set /p num=Please select the files(ex:1,2,3):
  21. for /f "Delims=," %%a in ("%num%") do (
  22. echo %%a
  23. )
  24. pause
复制代码
这段代码是先列出目录中的文件列表,然后打印出来,根据打印的顺序,选择多个数字后,把选择的显示出来,可是我试了之后只能运行一次,不知为何,有大佬解救么?谢谢

就是比如set /p num=Please select the files(ex:1,2,3):
这里我输入1,2,3之后
for /f "Delims=," %%a in ("%num%") do (
echo %%a
)
这里只能显示出1,没有2,3

TOP

因为你没指定tokens,所以只提取了第一列,
  1. for /f "tokens=1-3 Delims=," %%a in ("%num%") do echo %%a
复制代码
也可以这样
  1. for %%a in (%num%) do echo %%a
复制代码

TOP

回复 3# buyiyang


    先谢谢回复。我的想法是这个num变量是上面输入的,不一定是3位,也可能是10位,例如1,2,3,4,5,6,7,8,9,10。我想把这个输入的通过逗号间隔分别列出来

TOP

返回列表