Board logo

标题: [文本处理] 为何批处理For里面只能执行一次? [打印本页]

作者: wqwa    时间: 2023-5-31 16:14     标题: 为何批处理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
复制代码
这段代码是先列出目录中的文件列表,然后打印出来,根据打印的顺序,选择多个数字后,把选择的显示出来,可是我试了之后只能运行一次,不知为何,有大佬解救么?谢谢
作者: wqwa    时间: 2023-5-31 16:22

就是比如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
作者: buyiyang    时间: 2023-5-31 16:33

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

作者: wqwa    时间: 2023-5-31 16:39

回复 3# buyiyang


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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2