将输出redirect到Windows中另一个命令的命令行参数

我怎么能在Windows中使用脚本/命令的输出作为另一个脚本的参数? (一个pipe |不会在这里工作,因为其他脚本不会从标准input中读取)

太澄清:我有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以从标准input中读取。 这似乎是一个更好的解决scheme。

Solutions Collecting From Web of "将输出redirect到Windows中另一个命令的命令行参数"

注意:所有这些都需要命令在批处理文件中。 因此,双%迹象。

您可以使用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,以便您可以执行此操作。