使用Bash时,我可以将一个命令的输出放到另一个命令中,如下所示:
my_command `echo Test`
与
是一回事my_command Test
(显然,这只是一个非实际的例子。)
我只是想知道你是否可以批量做同样的事情。
答案 0 :(得分:93)
您可以使用带有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批处理脚本总是让我感到惊讶(但通常不是很好)。
答案 1 :(得分:53)
您可以先将输出重定向到文件。例如:
echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
答案 2 :(得分:26)
阅读“for”命令的文档:for /?
可悲的是,我没有登录Windows自行检查,但我认为这样的事情可以近似你的想法:
for /F %i in ('echo Test') do my_command %i
答案 3 :(得分:3)
答案 4 :(得分:3)
也许我搞砸了标准for /f
方法的语法,但当我提出一个涉及&amp;&amp;的非常复杂的命令时和|在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%
,则会导致语法错误。