不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行
cls
@echooff
rem将多个文件夹里的文件以所在文件夹(上级文件夹)名称和递增数字序号重命名
set#=Anyquestion&set@=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%@%%z%
cd/d"%~dp0"
powershell-NoProfile-ExecutionPolicybypass"Invoke-Command-ScriptBlock([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default)))-Args'%~dp0'"
echo;%#%+%$%%$%/%@%%z%
pause
exit
#>
$path=$args[0].trimend('\');
$dic=New-Object'System.Collections.Generic.Dictionary[string,Object]';
$files=@(dir-liter$path-recurse|?{('.bat'-ne$_.Extension)-and($_-is[System.IO.FileInfo])});
for($i=0;$i-lt$files.length;$i++){
if(-not$files[$i].Directory.Name.Contains(':')){
if(-not$dic.ContainsKey($files[$i].Directory.FullName)){
[System.Collections.ArrayList]$arr=@();
$dic.add($files[$i].Directory.FullName,$arr);
};
[void]$dic[$files[$i].Directory.FullName].add($files[$i]);
mv-liter$files[$i].FullName($files[$i].Directory.FullName+'\#'+$files[$i].Name);
};
};
foreach($kin$dic.keys){
$foldername=$k.split('\')[-1];
for($i=0;$i-lt$dic[$k].count;$i++){
$newname=$foldername+'-'+($i+1).toString().PadLeft(2,'0')+$dic[$k][$i].Extension;
write-host($dic[$k][$i].FullName+'-->'+$newname);
mv-liter($dic[$k][$i].Directory.FullName+'\#'+$dic[$k][$i].Name)($dic[$k][$i].Directory.FullName+'\'+$newname);
};
}
linux让数值依次递增的快捷键 如何将文件名批量修改成上一级文件夹的名字。如:A(文件夹名)-01这样依次递增?...