cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 将一个文件夹跟另一个文件薯茄夹进行对比,并查找出不相同的文件
set #=Any question&set _=WX&set $=Q&数凳察set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo%#% +%$%%$%/%_% %z%
pause
exit
#>
$folder1="D:\xxx\A文件夹"
$folder2="D:\xxx\B文件夹"
$folder3="D:\xxx\C文件夹"
if(-not (test-path -literal $folder1)){write-host ('"'+$folder1+'" 未找到')exit}
if(-not (test-path -literal $folder2)){write-host ('"'+$folder2+'" 未找到')exit}
if(-not (test-path -literal $folder3)){[void][IO.Directory]::CreateDirectory($folder3)}
function getfilehash($file){
$hash=''
$md5=New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$stream=New-Object System.IO.FileStream($file, [System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
$hash=[System.BitConverter]::ToString($md5.ComputeHash($stream)).replace('-','')
$md5.Clear()
$stream.Close()
$stream.Dispose()
return $hash
}
$files=@(dir -literal $folder1 -recurse|?{$_ -is [System.IO.FileInfo]})
for($i=0$i -lt $files.length$i++){
$tmpfile=$folder2.trimend('\')+$files[$i].FullName.SubString($folder1.trimend('\').length)
if(test-path -literal $tmpfile){
$h1=getfilehash $files[$i].FullName
$h2=getfilehash $tmpfile
粗信 if($h1 -ne $h2){$files[$i].FullName}
}else{$files[$i].FullName}
}
不清楚你的实际文件/情况,仅以问题中的说明及猜渣缓测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,A和B文件夹需设为共享文件夹
<# :cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 对比两台电脑里的两个文件夹,找出相同名称的文件,将一个文件夹里的同名文件替换掉另一个文件夹的同名文件
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "current=%cd%"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo%#% +%$%%$%/%_% %z%
pause
exit
#>
$folder1="\\A电脑IP\A文件夹"
$folder2="\\B电脑IP\B文件夹"
$b=[Convert]::FromBase64String("IC0tPiA=")
$c=[Text.Encoding]::Default.GetString($b)
$dic=New-Object 'System.Collections.Generic.Dictionary[string, object]'
$files1=@(dir -literal $folder1|?{$_ -is [System.IO.FileInfo]})
for($i=0$i -lt $files1.count$i++){
$key=$files1[$i].Name.ToLower()
if(-not $dic.ContainsKey($key)){
$arr=New-Object -TypeName System.Collections.ArrayList
[void]$dic.add($key, $arr)
}
[void]$dic[$key].add($files1[$i])
}
$files2=@(dir 如前模-literal $folder2|?{$_ -is 悔弊[System.IO.FileInfo]})
for($i=0$i -lt $files2.count$i++){
$key=$files2[$i].Name.ToLower()
if($dic.ContainsKey($key)){
$dic[$key][0].FullName+$c+$files2[$i].FullName
}
}
WinDiff不仅可以进行文贺芹戚件的比较,同时还可以进行目录的比较。进行目录比较很简单,选择其主菜单“File/Compare DirectorIEs”,在其中输入需要比较的目录首岁位置,其中禅陵选中“Include subdirectories”将对子目录进行比较。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)