如果我的download.txt
文件的列表中有1个或多个项目,请用逗号分隔。但是,当我执行此命令时,我的输出为test,abc,cat,dog
。我需要它循环,我的输出应该是test
,然后下一个应该是abc
等等...
download.txt = test,abc,cat,dog
我的命令行是......
FOR /F "tokens=* eol=, delims=" %%f in (Download.txt) do set output=%%f
答案 0 :(得分:0)
for /f "delims=" %%a in (download.txt) do for %%b in (%%a) do echo %%b
对于问题中的数据,请阅读带有for /f
循环的行,并使用for
循环遍历行中的元素(逗号是分隔符)
已修改以适应评论
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "delims=" %%a in (download.txt) do (
set "line=%%a"
setlocal enabledelayedexpansion
for /f "delims=" %%b in ("!line:,=","!") do (
endlocal
for %%c in ("%%~b") do call mysecondfile.cmd "%%~c"
)
)
基本思路是将完整的readed行用引号("aaa,bb bb,ccc"
)括起来,然后用","
序列("aaa","bb bb","ccc"
)替换每个逗号,这样我们就得到一个正确引用的序列元素
为了能够更改代码块中的变量并在同一代码块中检索更改的值,我们需要延迟扩展。但是,如果激活延迟扩展,则!
个字符会成为问题。包含setlocal / endlocal
重复以处理输入文本中存在的感叹号。