有没有软件或者bat命令可以把两个文件夹里同名的子文件合并到一个新的文件夹里?
发布网友
发布时间:2022-05-14 11:47
我来回答
共2个回答
热心网友
时间:2023-10-16 00:00
不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
<# :
cls&echo off&mode con lines=5000
rem 将两个指定文件夹里相同名称的文件拷贝/复制到同一个新的文件夹里
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$oldfolder=@("D:\xxx\文件夹1","D:\yyy\文件夹2");
$newfolder="E:\新文件夹";
if(-not (test-path -liter $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder)};
[byte[]]$b=@(32,45,45,62,32);
$c=[Text.Encoding]::Default.GetString($b);
$dic=New-Object 'System.Collections.Generic.Dictionary[string,Object]';
for($i=0;$i -lt $oldfolder.length;$i++){
if(test-path -liter $oldfolder[$i]){
$files=@(dir -liter $oldfolder[$i] -recurse|?{$_ -is [System.IO.FileInfo]});
for($j=0;$j -lt $files.length;$j++){
$key=$files[$j].Name.toLower();
if(-not $dic.ContainsKey($key)){
$brr=New-Object -TypeName System.Collections.ArrayList;
$dic.add($key,$brr);
}
[void]$dic[$key].add($files[$j]);
}
}else{write-host ('"'+$oldfolder[$i]+'" 未找到') -ForegroundColor red;}
}
foreach($k in $dic.Keys){
if($dic[$k].Count -ge 2){
for($i=0;$i -lt $dic[$k].Count;$i++){
$newname=$dic[$k][$i].Name;
$newfile=$newfolder.trimend('\')+'\'+$newname;
$n=2
while(test-path -liter $newfile){
$newname=$dic[$k][$i].BaseName+' ('+$n.toString()+')'+$dic[$k][$i].Extension;
$newfile=$newfolder.trimend('\')+'\'+$newname;
$n++;
}
$dic[$k][$i].FullName+$c+$newfolder;
}
}
}
热心网友
时间:2023-10-16 00:01
这样的软件即使没有,要定制也是很容易的。