2013-01-14 188 views
5

我有下面的代碼比較兩個文件夾,並輸出不同的文件相對於每個文件夾,有沒有辦法讓它輸出子文件夾中的文件的完整文件/文件夾路徑?它通過ForEach {$_.InputObject.FullName}Powershell - 比較文件夾內容

Compare-Object -ReferenceObject $FolderA -DifferenceObject $FolderB -Passthru | % {$_.FullName} >> C:\CmpOut.txt 

回答

3

試試這個:

Compare-Object -ReferenceObject $FolderA -DifferenceObject $FolderB | 
select @{n="InputObject";e={ 
    if ($_.inputobject -is [system.io.directoryinfo]) 
    {([system.io.DirectoryInfo]$_.InputObject).fullname} 
     else 
     { ([system.io.FileInfo]$_.InputObject).fullname}}},SideIndicator 
5

使用Comapre-對象的中繼標誌,像這樣。

像這樣:

Compare-Object -ReferenceObject $FolderA -DifferenceObject $FolderB | ForEach {$_.InputObject.FullName} 
+0

這樣SideIndicator丟失。 –

1

管:

乾杯

# Create varaibles to store folder paths - pass to Strings... 
param([string]$argFolderA,[string]$argFolderB) 

# Set variables for folder 
$FolderA = Get-ChildItem -Recurse -path $argFolderA 
$FolderB = Get-ChildItem -Recurse -path $argFolderB 

# Compare the contents and output the files different within each folder. 
Compare-Object -ReferenceObject $FolderA -DifferenceObject $FolderB >> C:\CmpOut.txt 
+0

以這種方式SideIndicator丟失。 –

+1

它不會丟失......它可以通過'$ _。SideIndicator'獲得。 – aphoria