找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18994|回复: 3

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

[复制链接]
发表于 2023-5-31 16:14:41 | 显示全部楼层 |阅读模式
  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
复制代码
这段代码是先列出目录中的文件列表,然后打印出来,根据打印的顺序,选择多个数字后,把选择的显示出来,可是我试了之后只能运行一次,不知为何,有大佬解救么?谢谢
 楼主| 发表于 2023-5-31 16:22:21 | 显示全部楼层
就是比如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
发表于 2023-5-31 16:33:17 | 显示全部楼层
因为你没指定tokens,所以只提取了第一列,
  1. for /f "tokens=1-3 Delims=," %%a in ("%num%") do echo %%a
复制代码
也可以这样
  1. for %%a in (%num%) do echo %%a
复制代码
 楼主| 发表于 2023-5-31 16:39:59 | 显示全部楼层
回复 3# buyiyang


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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 17:25 , Processed in 0.010163 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表