cmd for循环变量集问题

时间:2015-03-06 20:31:10

标签: cmd

我有一个名为

的文件

HelfTool.txt

Code1=Value1
Code2=Value2

我正在尝试使用相应的值获取名为Code1的变量和cmd批处理文件中的代码2。我写了下面的代码,但它给出了我在下面说明的错误。

for /f tokens^=1^,^2^ delims^=^*^=^" %%b in (C:\HelfTool.txt) do if not defined "%%b" set "%%b"=%%c
  

未定义环境变量Code1   
未定义环境变量Code2

我试图在批处理文件的开头定义这些变量,但没有用。任何人都可以帮到这里。

2 个答案:

答案 0 :(得分:2)

您的if not defined错误 - 不应引用变量名称。它应该是

if not defined %%b

您的set命令错误 - 它会在名称中创建一个带引号的变量。它应该是

set %%b=%%c

或者更好的是,将整个作业括在一组引号中:

set "%%b=%%c"

你的FOR / F选项大多是正确的,但我不明白为什么你采取了逃避一堆字符的困难路线而不是简单地使用引号。另外,我认为您不希望将*作为分隔符。你可以使用

for /f "tokens=1,2 delims=="

或更好(仅在值包含=的情况下,尽管它不会在值中保留前导=

for /f "tokens=1* delims=="

但我不明白你为什么要解析这条线,或者为什么你认为你必须测试变量是否已定义。在我看来,你可以简单地使用:

for /f "delims=" %%A in (C:\HelfTool.txt) do set "%%A"

答案 1 :(得分:1)

下一步 CLI 输出可以提供帮助:

==>for /f tokens^=1^,^2^ delims^=^*^=^" %b in (HelfTool.txt) do @echo set "%b=%c"
set "Code1=Value1"
set "Code2=Value2"

另一种方法:

==>for /f "tokens=*" %b in (HelfTool.txt) do @echo set "%b"
set "Code1=Value1"
set "Code2=Value2"

加倍%(百分号)以在.bat批处理脚本中使用,例如最后一个命令应该是

for /f "tokens=*" %%b in (HelfTool.txt) do @echo set "%%b"