标题: [文本处理] 为何批处理For里面只能执行一次? [打印本页]
作者: wqwa 时间: 2023-5-31 16:14 标题: 为何批处理For里面只能执行一次?
- @echo off
- setlocal EnableDelayedExpansion
-
- REM list the bin files
- :start
-
- dir /a-d /b .\bin\*.*>files.txt
- set /a flag=0
- for /f %%i in (files.txt) do (
- echo %%i
- set /a flag=flag+1
- set device!flag!=%%i
- )
- cls
- if !flag!==0 echo No files found. & pause & goto start
- if !flag! GTR 1 echo List the test files.
- set /a flag2=1
- for /f %%i in (files.txt) do (
- echo !flag2!. %%i
- set /a flag2=flag2+1
- )
- set /p num=Please select the files(ex:1,2,3):
-
- for /f "Delims=," %%a in ("%num%") do (
- echo %%a
-
- )
- 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,所以只提取了第一列,- for /f "tokens=1-3 Delims=," %%a in ("%num%") do echo %%a
复制代码
也可以这样- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |