我的dos批处理文件没有正确设置输出

时间:2014-12-02 22:02:24

标签: windows batch-file for-loop cmd

如果我的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

1 个答案:

答案 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重复以处理输入文本中存在的感叹号。