在 Windows 中,如何将脚本/命令的输出用作另一个脚本的参数? (管道 | 在这里不起作用,因为其他脚本不从标准输入中读取)
太清楚了:我有另一个脚本需要一个参数 arg,例如:
AnotherScript 12
现在我希望参数(示例中的 12)来自脚本的输出,将其称为 ScriptB。所以我想要一些类似的东西
AnotherScript (ScriptB)
AnotherScript 实际上是一个需要参数的 python 脚本,而 ScriptB 是一个生成一些数字的 cygwin bash 脚本,所以我想使用它的方式是这样的:
c:\Python26\python.exe AnotherScript (c:\cygwin|bin|bash --login -i ./ScriptB)
感谢您的回答。然而,鉴于需要费力的“for”构造,我重写了 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
关于windows - 将输出重定向到 Windows 中另一个命令的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425807/