我怎样才能在Windows中,使用脚本/命令的输出作为另一个脚本的说法? (A管|不会在这里工作,因为其他脚本不从标准输入读取)
太澄清:我有AnotherScript需要一个参数arg,如:
AnotherScript 12
现在我想的参数(12中的例子)来自一个脚本输出,称之为ScriptB。 所以我想沿着东西线
AnotherScript (ScriptB)
该AnotherScript实际上是一个Python脚本,需要一个参数,并ScriptB是一个cygwin bash脚本,产生一些数字,所以我想用它的方式是这样的:
c:\Python26\python.exe AnotherScript (c:\cygwin|bin|bash --login -i ./ScriptB)
感谢您的答案。 然而,鉴于费力“为”结构需要,我已经重写AnotherScript从标准输入读取。 这似乎是一个更好的解决方案。
注:所有这些都需要的命令是在一个批处理文件。 因此,双%
迹象。
您可以使用for
命令捕获命令的输出:
for /f "usebackq delims=" %%x in (`ScriptB`) do set args=%%x
那么你可以使用在另一个命令的输出:
AnotherScript %args%
这将导致%args%
含有从最后一行ScriptB
的输出,虽然。 如果它只返回一行就可以擀成一条线这样的:
for /f "usebackq delims=" %%x in (`ScriptB`) do AnotherScript %%x
当一个批处理文件之外使用,你必须使用%x
,而不是%%x
。
然而,如果ScriptB
返回多个线, AnotherScript
运行对每个那些线。 您可以绕过这个,虽然只在一个批处理文件,在第一循环迭代后突破:
for /f "usebackq delims=" %%x in (`ScriptB`) do AnotherScript %%x & goto :eof
你可以第一个脚本的输出保存到一个环境变量和使用它作为命令行参数的内容到第二个脚本,如果这是你想要的。
事情是这样的:
for /f "delims=" %a in ('first_script.cmd') do @set ouput=%a
second_script %ouput%
你是不是做事情的方式比需要更复杂?
从bash的通话AnotherScript。 必要时,安装Cygwin只是让你可以做到这一点。
文章来源: Redirecting output to a command-line argument of another command in Windows