windows - 将输出重定向到 Windows 中另一个命令的命令行参数

标签 windows command arguments

在 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/

相关文章:

go - Nginx version 命令不返回版本也不返回错误

angular - 如果任何一项测试失败,如何停止 Jasmine 单元测试

javascript - 将两个函数参数应用于 onClick 标记

python - 只有一个必需参数的方法出现参数过多错误

Scala:如何设置在抽象父类(super class)构造函数中定义的实例字段?

windows - 在命令提示符/Windows Powershell(Windows 10)中使用UTF-8编码(CHCP 65001)

c++ - 如何在不使用任何资源编辑器的情况下手动加载图标?

windows - 如何在Windows中找到特定线程的入口点?

c++ - 在 ShellExecute 函数中运行多个命令 (C++)

java - 使用应用程序发送多个 shell 命令