FOR中的命令重定向不起作用

时间:2014-04-13 21:23:09

标签: windows batch-file path cmd command-prompt

首先,我将解释一下情景:

在PATH环境变量已损坏/空(未指定目录)的计算机中,我需要运行批处理脚本来修复并将某些设置返回到默认值,然后显然脚本需要在控制台环境中工作,即使是PATH为空,所以我需要为每个com / exe文件指定绝对路径。

那么,理解我上面所说的,为什么FOR中的表达式不起作用并抛出语法错误?

For /F "tokens=*" %%# in (
    '"%SystemRoot%\System32\WBEM\WMIC.exe" useraccount where name^=^'%UserName%^' Get SID ^| "%SystemRoot%\System32\FINDSTR.exe" "[0-9]-[0-9]"'
) Do (
    Echo %%#
)

如果我删除FINDSTR命令的绝对路径,它会正常工作。

PS:我知道一个解决方案可能是在WMIC查询上使用CSV格式来解析输出而不是尝试将输出重定向到FINDSTR,但无论如何我需要找到关于其他循环的重定向的解决方案。我有同样的问题。

1 个答案:

答案 0 :(得分:1)

问题是引号

For /F "tokens=*" %%# in (
    '""%SystemRoot%\System32\WBEM\WMIC.exe" useraccount where name^=^'%UserName%^' Get SID | "%SystemRoot%\System32\FINDSTR.exe" "[0-9]-[0-9]""'
) Do (
    Echo %%#
)

我遇到了同样的问题,here是解决方案,也是问题出现的原因。