使用 Bash 时,我可以将一个命令的输出放入另一个命令,如下所示:
my_command `echo Test`
与
my_command Test
(显然,这只是一个不实际的例子。)
我只是想知道你是否可以在批处理中做同样的事情。
使用 Bash 时,我可以将一个命令的输出放入另一个命令,如下所示:
my_command `echo Test`
与
my_command Test
(显然,这只是一个不实际的例子。)
我只是想知道你是否可以在批处理中做同样的事情。
for /f
您可以使用带有以下命令的 cmd.exe 脚本获得类似的功能:
for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a
是的,这有点不明显(至少可以说),但它就是存在的。
看for /?
血淋淋的细节。
旁注:我认为echo
在“”命令的反引号内使用“”for /f
需要使用“ cmd.exe /c echo Test
”来完成,因为echo
它是 的内部命令cmd.exe
,但它以更自然的方式工作。Windows 批处理脚本总是以某种方式让我感到惊讶(但通常不是很好)。
您可以通过首先将输出重定向到文件来做到这一点。例如:
echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
阅读“for”命令的文档:for /?
可悲的是,我没有登录到 Windows 来亲自检查它,但我认为这样的事情可以近似于你想要的:
for /F %i in ('echo Test') do my_command %i
也许我搞砸了标准for /f
方法的语法,但是当我输入一个涉及 && 和 | 的非常复杂的命令时 在 的范围内的反引号内for /f
,它会导致问题。对通常的轻微修改可以处理任意复杂性命令:
SET VV=some_command -many -arguments && another_command -requiring -the-other -command | handling_of_output | more_handling
for /f "usebackq tokens=*" %%a in (`%VV%`) do mycommand %%a
通过首先将完整且复杂的命令放入变量中,然后将对该变量的引用放入限制中,而不是将复杂命令直接放入 for 循环的限制中,您可以避免语法解释问题。目前,如果我将VV
上面示例中为变量设置的确切命令复制到使用它的位置%VV%
,则会导致语法错误。