POWERSHELL:如何在Powershell中运行管道工具?

时间:2020-08-04 14:55:24

标签: python powershell

目标:

$: Get-ChildItem -File | ForEach-Object { $_.ToString() }

foo1
foo2

$: Get-ChildItem -File | ..\..\python\modules\foo.py hello-file $_.ToString()

hello, foo1!
hello, foo2!

我必须运行的版本,但无法正常工作:

Get-ChildItem -File | ForEach-Object {..\..\python\modules\foo.py hello-file $_.ToString()}

与上述命令等效的BASH:

# path vars are set
$: ls | xargs -I {} foo.py hello-file {}

hello, foo1!
hello, foo2!

上面的powershell代码的结果:

运行python的CMD窗口的实例打开和关闭;没有输出通过管道传输到终端。

一个人如何在Powershell中实现这一壮举?是否可以避免更改python代码?

1 个答案:

答案 0 :(得分:0)

我不确定您的python文件的内部工作原理是什么,但我认为您会发现这有所帮助:

Get-ChildItem -File | ForEach-Object { python ..\..\python\modules\foo.py hello-file $_.ToString()}

添加单词“ python”将使脚本直接在当前shell中运行。 因此,任何错误/结果都将打印在您可以看到它们的地方。

当我在没有显式输入“ python”的情况下运行时,一个单独的python终端被打开并立即关闭。