将许多数组元素作为单独的参数传递给 Powershell 中的可执行文件

Pass many array elements as individual arguments to executable in Powershell

我正在尝试将路径列表作为参数传递给二进制文件。我使用

检索了文件
$files = (Get-ChildItem .\folder).FullName

我想将它们传递给我的二进制文件如下:

.\bin.exe $files[0] $files[1] ...

换句话说,我想将每个数组元素作为单独的参数传递给可执行文件。在我的例子中,数组中还有很多元素:大约 100000。

我试过以下方法:

.\bin.exe $files

而且它似乎适用于少量元素(大约 400 个绝对路径)。然后 Powershell 抛出以下错误:

ResourceUnavailable: Program 'xml-to-graph.exe' failed to run: The filename or extension is too long.At line:1 char:1
+ .\xml-to-graph.exe -output-dir fixtures -format "%n %m`n%.2FM`n%a`n"  …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.

我怎样才能做到这一点?

In my case there are also many elements in the array: about 100000.

这会很困难。 “传递给二进制文件”意味着“构建命令行并执行它”,并且命令行有长度限制(Windows 为 8 kB,see MSDN)。

您可以在收到的错误消息中看到您达到了该限制(“文件名或扩展名太长。”)。

How can I achieve this?

无法绕过长度限制。你将不得不

  • 检查 xml-to-graph.exe 程序的文档以查看它是否支持获取输入文件的其他方法,或者
  • 如果可能的话,分批完成您的工作

xml-to-graph.exe 似乎是一个 XML 转换程序,它将许多 XML 文件作为输入并生成一个输出文件。根据该程序的工作方式,可能还有第三种选择,将所有小 XML 文件合并为一个大文件,然后调用 xml-to-graph.exe joined.xml.