bat命令如何批量倒序重命名多个文件夹内的图片?

有几千个文件夹,每个文件夹里面有数量不等的若干图片,需要把这些图片由后往前倒序重命名,按照1, 1_1, 1_2, 1_3这样的顺序,必须按顺序从末位到首位,顺序不能乱,比如原来图片名称是A,B,C,D,E,F,G,H,I,J(实际文件夹名称不是ABC,这里只是举例),需要重命名为1_9,1_8,1_7,1_6,1_5,1_4,1_3,1_2,1_1,1这样,求帮忙解决,万分感谢!

不清楚你的实际文件/情况,仅以问题中的样例/说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 将当前目录下多个子文件夹里的jpg图片文件按指定规则重命名
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "current=%cd%"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$codes=@'
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
public static class ExpDir
{
    [DllImport("Shlwapi.dll", CharSet=CharSet.Unicode)]
    public static extern int StrCmpLogicalW(string p1, string p2);
    public static string[] Sort(string[] f)
    {
        Array.Sort(f, StrCmpLogicalW);
        return f;
    }  
}
'@;
Add-Type -TypeDefinition $codes;

$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
$current=$env:current;
$folders=@(dir -literal $current|?{$_ -is [System.IO.DirectoryInfo]}|%{$_.Name});
if($folders.length -ge 1){
    $arr=[ExpDir]::Sort($folders);
    for($i=0;$i -lt $arr.Count;$i++){
        $fd=$current+'\'+$arr[$i];
        $files=@(dir -literal $fd|?{(@(".jpg") -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])}|%{$_.Name});
        if($files.length -ge 1){
            $n=0;
            $brr=[ExpDir]::Sort($files);
            if($brr.Count -gt 1){$n=$brr.Count-1;}
            for($j=0;$j -lt $brr.Count;$j++){
                $suffix='';
                if($j -lt ($brr.Count -1 )){$suffix='_'+$n.toString();$n--;}
                $f=get-item -literal ($fd+'\'+$brr[$j]);
                $fn='1'+$suffix+$f.Extension;
                $f.FullName.Substring($current.length+1)+$c+$fn;
            }
            write-host '';
        }
    }
}

温馨提示:答案为网友推荐,仅供参考
相似回答