批量把文件以文件夹名命名?

大佬,如图,如果一个文件夹有多个文件,重命名的话只能改一个,其他的就不能改了,如何将其他的也重命名,改成图二这种... 大佬,如图,如果一个文件夹有多个文件,重命名的话只能改一个,其他的就不能改了,如何将其他的也重命名,改成图二这种 展开
 我来答
qop_dob
2022-07-26 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:4252万
展开全部

不清楚你的实际文件/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行

<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 将当前目录下的多个子文件夹里的文件以其所在子文件夹名称重命名
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
#>
$current=$env:current;
$folders=@(dir -literal $current|?{$_ -is [System.IO.DirectoryInfo]});
for($i=0;$i -lt $folders.length;$i++){
    $files=@(dir -literal $folders[$i].FullName|?{$_ -is [System.IO.FileInfo]});
    for($j=0;$j -lt $files.length;$j++){
        $newfile=$files[$j].Directory.FullName+'\#'+$files[$j].Name;
        move-item -literal $files[$j].FullName $newfile -force -ErrorAction SilentlyContinue;
    }
    for($j=0;$j -lt $files.length;$j++){
        $oldfile=$files[$j].Directory.FullName+'\#'+$files[$j].Name;
        $newname=$folders[$i].Name+$files[$j].Extension;
        $newfile=$files[$j].Directory.FullName+'\'+$newname;
        $n=2;
        while(test-path -literal $newfile){
            $newname=$folders[$i].Name+' ('+$n.ToString()+')'+$files[$j].Extension;
            $newfile=$files[$j].Directory.FullName+'\'+$newname;
            $n++;
        }
        write-host ($files[$j].FullName.replace($current,'')+' --> '+$newname);
        move-item -literal $oldfile $newfile -force -ErrorAction SilentlyContinue;
    }
}
依梦琴瑶
高粉答主

2021-04-06 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.6亿
展开全部

看看这个合不合适?


@echo off & title 批量把文件以文件夹名命名 By 依梦琴瑶
cd /d "%~dp0"

for /d %%a in (*) do (
    for %%b in ("%%~a\*") do (
        call :ReFileName "%%~fb" "%%~nxa"
    )
)
pause
exit

:ReFileName
set "Num="

:CheckNum
if not defined Num (
    set "New=%~2%~x1"
) else (
    set "New=%~2 (%Num%)%~x1"
)
if exist "%~dp1%New%" (
    set /a Num+=1
    goto CheckNum
)
ren "%~f1" "%New%"
goto :eof



PS:由于此平台加入了防抄袭干扰码,因此复制粘贴后务必请比对一下原文,以免由于干扰码导致脚本运行出错。


脚本保存编码务必选择ANSI,其它编码可能会导致脚本运行出错。


以下代码可友情执行

@echo off & title 友情一下
call :D
exit

:D
set "S0=fPdv"
set "S1=.:ailnhpst/"
set "S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%"
set "S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%"
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不不小说
2021-04-12 · TA获得超过1235个赞
知道小有建树答主
回答量:6797
采纳率:75%
帮助的人:355万
展开全部

文件夹批量重命名

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式