我正在使用PowerShell脚本在某些服务器上移动一些文件.我想测试我要移动的文件是否已存在于目标中.不只是具有相同名称的文件.
我想
Compare-Object $File1 $File2
应该这样做,但无论文件是什么,它总是返回它们是相同的,例如.
InputObject SideIndicator
----------- -------------
D:\1.gif =>
D:\1.wma <=
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来测试两个文件是否相同?
Jay*_*kul 11
我想这将取决于你对"相同"的定义
Compare-Object (ls Source\Test.*) (ls Dest\Test.*) -Property Name, Length, LastWriteTime
Run Code Online (Sandbox Code Playgroud)
这将按名称,长度和修改日期比较实际的FILE对象.添加-IncludeEqual也会导致两个地方都显示相同的内容.
如果您只想复制"源"中与"目标"不同的文件,请执行以下操作:
Compare-Object (ls $Source) (ls $Destination) -Property Name, Length, LastWriteTime -passthru |
Where { $_.PSParentPath -eq (gi $Source).PSPath } |
Copy-Item $Destination
Run Code Online (Sandbox Code Playgroud)
不要开始编写获取内容的脚本(按照其他人的建议)进行文件比较 - 你要将所有内容加载到内存中......
请考虑使用robocopy(即使它的命令行语法已过时).=Þ
小智 8
(Get-FileHash $ path1).Hash -eq(Get-FileHash $ path2).Hash
你只需要给两个字符串Compare-Object
,你想要的文件内容:
Compare-Object (gc $File1) (gc $File2)
Run Code Online (Sandbox Code Playgroud)
您输出的输出也不意味着文件是相同的.
归档时间: |
|
查看次数: |
23097 次 |
最近记录: |