level 1
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
<# :
cls&echo off&mode con lines=3000
rem 查找出两个指定文件夹下相同名称的文件中大小/占用空间最大的一个
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$folder1="D:\xxx\文件夹1";
$folder2="D:\xxx\文件夹2";
$arr=@($folder1,$folder2);
$dic=New-Object 'System.Collections.Generic.Dictionary[string,Object]';
for($i=0;$i -lt $arr.length;$i++){
if(-not (test-path -liter $arr[$i])){
write-host ('"'+$arr[$i]+'" 未找到');
}else{
$files=@(dir -liter $arr[$i] -recurse|?{$_ -is [System.IO.FileInfo]});
for($j=0;$j -lt $files.length;$j++){
$fn=$files[$j].Name.toLower();
if(-not $dic.ContainsKey($fn)){
$brr=New-Object -TypeName System.Collections.ArrayList;
$dic.Add($fn,$brr);
}
[void]$dic[$fn].add($files[$j]);
}
}
}
foreach($k in $dic.Keys){
if($dic[$k].count -ge 2){
$crr=@($dic[$k]|sort {$_.length} -Descending);$crr[0].FullName;
}
}
2021年05月07日 12点05分