不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起运行
<# :
cls
@echo off
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]::Default)))"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$path='.';
$ext=@('.rar', '.zip', '.7z');
$folders=@(dir -liter $path|?{$_ -is [System.IO.DirectoryInfo]});
for($i=0;$i -lt $folders.length;$i++){
$files=@(dir -liter $folders[$i].FullName -recurse|?{($ext -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])});
for($j=0;$j -lt $files.length;$j++){
$n=2;
$newfile=$path+'\'+$files[$j].Name;
while(test-path -liter $newfile){
$newfile=$path+'\'+$files[$j].BaseName+'_'+$n.toString()+$files[$j].Extension;
$n++;
}
write-host ($files[$j].FullName+' --> '+$newfile);
#mv -liter $files[$j].FullName $newfile;
};
}