【发布时间】:2015-10-27 14:39:51
【问题描述】:
我在很多地方读到过,我可以使用 Windows 批处理文件 for 来获取命令的输出并将其放入变量中,如下所示:
FOR /F %%G IN ('foo-command') DO SET FOO=%%G
太好了。所以我的foo-command 实际上是C:\Program Files\Foo\foo.bat,它存储在FOO_BAT 变量中。它接受一个参数bar,其值为blah blah='foobar' blah。所以我试试:
FOR /F %%G IN ('%FOO_BAT% -bar "blah blah='foobar' blah"') DO SET FOO=%%G
我收到了一个可爱的'C:\Program' is not recognized...。我无能为力地绕过命令中的空间。
如果您想重现此内容,请创建一个简单的 C:\Program Files\Foo\foo.bat 文件,其中仅包含以下内容,然后在批处理文件中运行上述行。
echo FooBar
如果命令的路径中有空格,我如何将命令(接受参数)的输出捕获为 Windows 批处理变量?
- 是的,我尝试在
%FOO_EXE%周围加上引号。 - 是的,我尝试将所有内容放在一个单独的变量中,并在
FOR中使用该单个变量。 - 在告诉我它有效之前,请使用我提供的参数尝试。参数的存在改变了一切。
【问题讨论】:
-
您需要在“%FOO_EXE%”变量周围加上引号。
-
@Squashman 我猜你错过了我说“是的,我尝试在
%FOO_EXE%周围加上引号”的部分。 -
编辑您的原始问题并在可执行文件周围使用 QUOTES 时尝试的确切用法。单词 program 后面有一个空格,因此您没有根据您提供的 ERROR 正确使用引号。
-
@Squashman 请自己尝试
FOR /F %%G IN ('"C:\Program Files\Foo\foo-command.exe" -bar "blah blah='foobar' blah"') DO SET FOO=%%G,然后告诉我你得到了什么错误。谢谢。 -
@Squashman 我对您在运行上述命令时收到的错误非常感兴趣。你能把它贴在这里给我们所有人吗?谢谢。
标签: windows variables batch-file command