如何将文件名批量修改成上一级文件夹的名字。如:A(文件夹名)-01这样依次递增?

发布网友 发布时间:2022-03-05 01:08

我来回答

3个回答

热心网友 时间:2022-03-05 02:37

不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为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);
    };
}

热心网友 时间:2022-03-05 03:55

将文件名批量修改成上一级文件夹的名字。如:A(文件夹名)-01这样依次递增

热心网友 时间:2022-03-05 05:30

您指的上一级文件夹,是指被重命名的文件所在的文件夹上面那个文件夹吗?还是文件所在的那个文件夹

比如路径为“ X:\A\B\C文件 ”中C文件重命名成A那个目录名,还是B那个目录名?来自:求助得到的回答
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com