linux让数值依次递增的快捷键,如何将文件名批量修改成上一级文件夹的名字。如:A(文件夹名)-01这样依次递增?...

不清楚你的实际文件/情况,仅以问题中的样例/说明为据

复制粘贴到记事本,另存为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))) -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($k in $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);

};

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值