早上好
我正在尝试将两个.xml文件合并为PowerShell任务。
$testResultFiles = Get-ChildItem *.postman_collection.xml
dir
$filesNames = New-Object System.Collections.Generic.List[System.Object]
foreach($file in $testResultFiles)
{
Write-Host $file.FullName
$filesNames.Add($file.Name)
}
Write-Host junit-merge $filesNames
junit-merge $filesNames
我得到一个例外:
错误:找不到文件 在getTestsuites(C:\ npm \ prefix \ node_modules \ junit-merge \ lib \ index.js:82:11) 在C:\ npm \ prefix \ node_modules \ junit-merge \ lib \ index.js:112:17
该消息是关于找不到文件。但是我看到使用
作为输出dir
那些文件存在
答案 0 :(得分:0)
问题是您要添加文件名称,而不是整个路径和文件名,例如全名?
即您的原始代码:
Write-Host $file.FullName
$filesNames.Add($file.Name)
此代码尽管显示了整个路径,但您只是将文件名添加到列表中。因此,当junit-merge运行时,它将从当前位置运行,而不是预期的完整路径。
应该是:
Write-Host $file.FullName
$filesNames.Add($file.FullName)
编辑:
另一种想法可能是$fileNames
对象被传入并解释为单个字符串参数,而不是适当的“空格分隔”参数列表,后者被解释为参数数组。
我们可以使用Splatting将List
手动“展开”为某些东西,通过使用@
符号将其解释为单独的参数。
junit-merge @filesNames