2013-01-14 40 views
5

Tôi có mã dưới đây so sánh hai thư mục và xuất ra các tệp khác nhau đối với mỗi thư mục, có cách nào để xuất ra đường dẫn tệp/thư mục đầy đủ cho tệp trong thư mục con không?Powershell - So sánh các nội dung trong thư mục

Cheers

# 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 

Trả lời

3

Hãy thử điều này:

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

Sử dụng cờ passthru của comapre-Object như vậy:

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

Bằng cách SideIndicator này sẽ bị mất. –

1

ống nó thông qua ForEach {$_.InputObject.FullName}.

Như thế này:

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

Bằng cách này, SideIndicator bị mất. –

+1

Nó không bị mất ... nó có sẵn thông qua '$ _. SideIndicator'. – aphoria

Các vấn đề liên quan