如何解决如何处理比较对象结果?
| 在发布之前,我做了很多搜索,没有运气。 假设我要比较两个文件夹compare-object @(gci c:\\folder1) @(gci c:\\folder2)
我看到sideIndicator等的输出,但是我该怎么做
if objects are equals then
do something
else
do something else
end if
如果我将此cmdlet传递给get-member,我会看到一个equals方法,但我不知道如何使用它,我甚至不确定它是否可以解决我的问题。是否有任何布尔属性可以告诉我对象是否相等?
谢谢你的时间。
编辑
嗨,我的救星。 :)
如果我了解我必须做这样的事情:
$differences = 0
$a = @(1,4,5,3)
$b = @(1,3,4)
diff $a $b -in | % {if($_.sideindicator -ne \"==\") {$differences+=1}}
write-host $differences
这是唯一的方法吗?
编辑2。
在我看来,如果我不使用-includeEqual,我只会得到区别,因此这段代码就足够了。
$differences = 0
$a = @(1,4)
diff $a $b | % {$differences+=1}
write-host $differences
如果对象相等,则返回0。这是解决我的问题的正确方法吗?
解决方法
基本上,您不需要计算差异,相反,如果仅找到\'== \'就足够了,则可以使用:
$a = @(1,2,3,4,5,6,7,8,9,10)
$b = @(10,1,9)
if (diff $a $b) {
\'not equal\'
} else {
\'equal\'
}
工作原理:如果管道(〜diff的序列)返回0项的集合,则转换为[bool]
时,它将转换为$false
。非空集合将转换为$true
。
,看一下这个例子:
http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2011/01/12/quicktip-Comparing-installed-HotFixes-on-a-two-node-Cluster.aspx
您可以使用sideindicator值并进行字符串比较。
,如果您只想计算差异,则可以更加简洁:
$a = 1..10
$b = 3..11
(diff $a $b).count
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。