Powershell 阵列输出到多行
输出:Powershell 阵列输出到多行,powershell,Powershell,输出: I:\1992.xlsxI:\projects\confluence\projects\documents\XXXX\u合规性。xlsxI:\projects\confluence\projects\documents\XXXX\u供应商云标准政策规则.xlsx 我想要它: I:\1992.xlsx I:\projects\confluence\projects\documents\XXXX\u ComplianceRegulations.xlsx I:\projects\conflu
I:\1992.xlsxI:\projects\confluence\projects\documents\XXXX\u合规性。xlsxI:\projects\confluence\projects\documents\XXXX\u供应商云标准政策规则.xlsx
我想要它:
I:\1992.xlsx
I:\projects\confluence\projects\documents\XXXX\u ComplianceRegulations.xlsx
I:\projects\confluence\projects\documents\XXXX\u供应商云标准政策法规.xlsx
我不确定这里出了什么问题。它应该将其添加到下一行,而不是将其追加到字符串的末尾。将
$holdArray+=$test.path
更改为[array]$holdArray+=$test.path
您没有告诉PowerShell这是一个数组,因此它将其视为一个字符串。您正在将“数组”展平为一个空格分隔的字符串,因为您最初没有声明$holdArray
。跳过数组“构建”逻辑,使用管道获得所需的结果
Get-ChildItem "$Folder" *.xlsx -Recurse | ?{-not ($_.PSIsContainer -or (Test-Path "I:\TEMP_Dir_SSN\$_"))} | copy-Item -Destination "I:TEMP_Dir_SSN" | out-null
Get-ChildItem "$Folder" *.xlsx -Recurse | %{
$test = Resolve-Path $_.FullName
$holdArray += $test.path
}
$holdArray | out-file "I:\TEMP_Dir_SSN\fullPath.txt" -append
默认情况下,添加内容 @schnipdip也是一个选项。在这里,您告诉PowerShell在填充之前创建一个空数组。同样有效的是:
$holdArray=@($test.path)
:-)我喜欢在使用for循环时执行$holdArray=@()
,因为这样我就可以输出到数组中。从视觉上看,我更容易理解正在发生的事情。因此,如果出现问题,我可以理解问题所在。这只是忘了加上那一部分,哈哈哈,为什么我爱powershell:让事情发生很容易。
Get-ChildItem $Folder *.xlsx -Recurse |
Resolve-Path | Convert-Path |
Add-Content "I:\TEMP_Dir_SSN\fullPath.txt"