将许多数组元素作为单独的参数传递给 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
.
我正在尝试将路径列表作为参数传递给二进制文件。我使用
检索了文件$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
.