Rab*_*ski 6 windows command arguments
在Windows中,我如何使用脚本/命令的输出作为另一个脚本的参数?(管道|在这里不起作用,因为其他脚本不能从标准输入读取)
太澄清了:我有一个需要参数arg的AnotherScript,例如:
AnotherScript 12
Run Code Online (Sandbox Code Playgroud)
现在我希望参数(示例中的12)来自脚本的输出,称之为ScriptB.所以我想要一些类似的东西
AnotherScript (ScriptB)
Run Code Online (Sandbox Code Playgroud)
AnotherScript实际上是一个需要参数的python脚本,而ScriptB是一个产生一些数字的cygwin bash脚本,所以我想使用它的方式如下:
c:\Python26\python.exe AnotherScript (c:\cygwin|bin|bash --login -i ./ScriptB)
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答.但是,考虑到需要费力的'for'构造,我已经重写了AnotherScript以从标准输入中读取.这似乎是一个更好的解决方案.
注意:所有这些都要求命令位于批处理文件中.因此双重%
标志.
您可以使用该for
命令捕获命令的输出:
for /f "usebackq delims=" %%x in (`ScriptB`) do set args=%%x
Run Code Online (Sandbox Code Playgroud)
然后你可以在另一个命令中使用该输出:
AnotherScript %args%
Run Code Online (Sandbox Code Playgroud)
但这将导致%args%
包含ScriptB
输出的最后一行.如果它只返回一行,您可以将其转换为一行:
for /f "usebackq delims=" %%x in (`ScriptB`) do AnotherScript %%x
Run Code Online (Sandbox Code Playgroud)
在批处理文件外使用时%x
,必须使用而不是%%x
.
但是,如果ScriptB
返回多行,AnotherScript
则为每条行运行.您可以通过在第一次循环迭代后断开来绕过这个 - 尽管只在批处理文件中:
for /f "usebackq delims=" %%x in (`ScriptB`) do AnotherScript %%x & goto :eof
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9007 次 |
最近记录: |