在foreach中运行程序

Luk*_*ane 27 powershell

我试图让这个简单的Powershell脚本工作,但我觉得有些根本错误;-)

ls | foreach { "C:\Working\tools\custom-tool.exe" $_ }
Run Code Online (Sandbox Code Playgroud)

我基本上想要在目录中获取文件并将它们作为参数逐个传递给自定义工具.

tom*_*asr 44

如果你仍然需要命令路径周围的引号(比如,如果你有空格),就这样做:

ls | % { &"C:\Working\tools\custom-tool.exe" $_.FullName }
Run Code Online (Sandbox Code Playgroud)

请注意在字符串之前使用&来强制PowerShell将其解释为命令而不是字符串.


sli*_*sec 33

ls | %{C:\Working\tools\custom-tool.exe $_}
Run Code Online (Sandbox Code Playgroud)

当每个对象进入管道时,工具将对其进行运行.在命令字符串周围加上引号会使它成为一个刺痛!然后局部变量"$ _"它可能不知道如何处理这样的错误.


小智 6

我认为你的工具需要完整的路径.$ _是通过管道传递的每个文件对象.您可能需要使用这样的表达式:

ls | %{C:\Working\tools\custom-tool.exe $_.fullname}
Run Code Online (Sandbox Code Playgroud)