2017-06-21 86 views
1
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 

輸出:陣列輸出到多行

I:\1992.xlsxI:\projects\confluence\projects\documents\XXXX_ComplianceRegulations.xlsxI:\projects\confluence\projects\documents\XXXX_vendorCloudStandardsPoliciesRegs.xlsx 

我希望它:

I:\1992.xlsx 

I:\projects\confluence\projects\documents\XXXX_ComplianceRegulations.xlsx 

I:\projects\confluence\projects\documents\XXXX_vendorCloudStandardsPoliciesRegs.xlsx 

我不知道是怎麼回事錯在這裏。它應該將其添加到下一行,而不是將其追加到字符串的末尾。

回答

1

變化$holdArray += $test.path[array]$holdArray += $test.path

你還沒告訴PowerShell的,這是故把它當作一個字符串數組。

+0

注意:你也可以做'$ holdArray = @()' – schnipdip

+1

@schnipdip也是一個選項。在那裏,你告訴PowerShell在填充之前創建一個空數組。同樣有效的是:'$ holdArray = @($ test.path)':-) – gms0ulman

+0

當我使用for循環時,我喜歡'$ holdArray = @()',因爲這樣我才輸出到數組中。我在視覺上更容易理解正在發生的事情。所以如果出現問題,我可以理解問題所在。這只是忘了添加該部分hahahaha – schnipdip

0

由於您最初尚未聲明$holdArray,因此將「數組」平鋪爲空格分隔的字符串。跳過數組「構建」邏輯並使用管道獲得所需的結果。

Get-ChildItem $Folder *.xlsx -Recurse | 
    Resolve-Path | Convert-Path | 
    Add-Content "I:\TEMP_Dir_SSN\fullPath.txt" 

Add-Content默認附加。