2011-04-27 102 views
7

我發佈之前做了大量搜索,但都沒有運氣。 讓我們假設我想比較兩個文件夾如何處理比較對象結果?

compare-object @(gci c:\folder1) @(gci c:\folder2) 

我看到sideIndicator輸出等,但我怎麼可以這樣做

if objects are equals then 
    do something 
else 
    do something else 
end if 

,如果我管這個cmdlet來獲取會員我看到一個等價的方法,但我不知道如何使用它,我甚至不知道它是否可以解決我的問題。有沒有任何布爾屬性告訴我對象是否等於或不是? 謝謝你的時間。

編輯

你好我的救命恩人。 :) 如果我明白我必須做這樣的事情:

$differences = 0 
$a = @(1,4,5,3) 
$b = @(1,3,4) 
diff $a $b -in | % {if($_.sideindicator -ne "==") {$differences+=1}} 
write-host $differences 

這是唯一的辦法?

EDIT 2

在我看來,如果我不使用-includeEqual我只得到了分歧,所以這段代碼就足夠了。

$differences = 0 
$a = @(1,4,5,3) 
$b = @(1,3,4) 
diff $a $b | % {$differences+=1} 
write-host $differences 

並且如果對象相等則它返回0。這是解決我的問題的正確方法嗎?

回答

6

基本上,你並不需要統計的差異,而不是如果恰好發現「==」就足夠了,你可以使用:

$a = @(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 
$b = @(10, 1, 2, 3, 4, 5, 6, 7, 8, 9) 
if (diff $a $b) { 
'not equal' 
} else { 
'equal' 
} 

工作原理:如果管道(〜序列from diff)返回0個項目的集合,然後轉換爲[bool]時,它將轉換爲$false。非空集合被轉換爲$true

+0

嗨stej。非常感謝你。現在我明白了 :) – 2011-04-27 20:03:56

4
+0

感謝您的支持costant。再見。 ;) – 2011-04-27 20:05:15

+0

糟糕,抱歉。當所有其他意見發生時都睡着了。你看到的時區! – ravikanth 2011-04-28 02:01:34

+0

沒問題。你總是對我很友善。現在我也去睡覺了。 ;) – 2011-04-28 02:38:45

3

如果你只是想的差異數,你可以得到更簡潔:

$a = 1..10 
$b = 3..11 
(diff $a $b).count