批处理如何实现修改目录下所有文件夹内指定后缀格式的文件名?

比如一个目录下有很多无规则命名的文件夹(可能会有一些下层文件夹),其中会有一些.jpg和.PDF,现在需要指定把所有*.pdf文件修改前缀P-01.pdf、P-02.pdf……。
1.可以修改指定文件格式
2.每个文件夹内都是以01、02为序列

谢谢大神

第1个回答  2021-04-20
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行
<# :
cls&echo off&mode con lines=5000
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]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$prefix="P-";
$ext=@(".pdf");
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
[byte[]]$b=@(32,45,45,62,32);
$c=[Text.Encoding]::Default.GetString($b);
$folders=@(dir -liter $path -recurse|?{$_ -is [System.IO.DirectoryInfo]});
for($i=0;$i -lt $folders.length;$i++){
$files=@(dir -liter $folders[$i].FullName|?{($ext -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
$dic=New-Object 'System.Collections.Generic.Dictionary[string,int]';
write-host $folders[$i].FullName;
for($j=0;$j -lt $files.length;$j++){
$key=$files[$j].Extension.toLower();
if(-not $dic.ContainsKey($key)){
$dic.add($key,1);
}else{$dic[$key]++;}
$files[$j].Name+$c+$prefix+$dic[$key].toString().PadLeft(2,'0')+$files[$j].Extension;
}
}
}追问

运行过发现会出现改名的预览,但是没有实际改名成功,求教

追答

按运行代码后窗口标题栏的提示联系我

批处理如何实现修改目录下所有文件夹内指定后缀格式的文件名?
rem 将当前目录下所有文件夹里的指定扩展名\/后缀名的文件按照只指定的前缀字符+递增的数字重命名 set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4 title %#% +%$%%$%\/%@% %z cd \/d "%~dp0"powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([Scr...

Win7\/win8系统下利用批处理文件批量修改文件后缀名的方法
如果要批量修改后缀名,可借助通配符来实现。比如将D盘中的所有文件后缀名改为jpg的命令为:2、复制代码代码如下:ren D:* *.png 如果只想将某一类型文件(具有相同后缀名)修改为另一个类型,比如,将D盘中的所有jpg文件后缀修改为png,其命令为:3、复制代码代码如下:ren D:*.jpg *.png 如果你...

如何批处理更改所有子文件夹内文件的文件名
更改所有文件夹中的文件后缀名,代码如下 echo off & title 批量更改指定文件后缀名 By 依梦琴瑶 ::设置要处理的后缀名,无需输入小数点 set Ext=xxx ::设置更改后的后缀名,无需输入小数点 set Next=png for \/d %%a in (*) do (pushd "%%~a"for \/f "delims=" %%b in ('dir \/a-d...

使用批处理快速修改一个文件夹里面所有文件的文件名
1.选择最前面的一列右键---》插入 2.快速选择所有要修改的行 3.快速填充 ren 例如:---图片0.png--->图片2.png--->图片3.png 1.选择后面一列(原文件名列后面)在第一行输入:图片0.png 1.表格另存为文本文档(txt)2.打开文本,将多出的空格替换为一个字符的空格 3.再另存为,修改...

怎么用bat批量重命名文件夹名?
1、右击电脑桌面的空白处,新建一个文本文档。2、新建完成后在空白的文本文档中输入代码@echo offstart cmd%0,输入完成后点击页面上的保存选项将该文件保存。3、将刚刚保存的TXT文件更改为.BAT后缀。4、双击该bat文件即可。

如何批量修改文件名后缀名
用dos批处理命令实现:步骤1、新建一个文本文档(txt格式)步骤2、打开输入以下内容 “dir\/b>1111.xls”注意不要引号,然后点选另存为,“文件名”栏改为“提取文件名.bat”注意要去掉txt后缀,文件类型改为所有,即可。步骤3、复制到任何需要生成目录的文件夹 步骤4、双击运行 注意:喜欢生成文本文件...

批处理修改后缀名
一、DOS方法:1、开始,运行,输入CMD或者COMMAN,点击确定进入DOS界面;2、在DOS中输入D:命令,回车,进入D盘根目录;3、输入CD yourfile,回车,进入yourfile文件夹;4、在yourfile文件夹下面,输入ren *.php* *.jpg,回车即可。二、在WINDOWS界面操作方式:1、批处理文件方法: 在WINDOWS界面下,...

批处理将当前目录下的文件及文件夹复制到指定目录
1、在该文件夹下新建一个文本文档。2、打开这个文本文档,输入以下命令:DIR *.* \/B >list.txt。3、文件另存。4、修改后缀名为“.bat”,然后保存。5、双击文件,运行。6、出现了我们需要的文件名称列表。7、打开之后,就能看到。

怎么修改文件夹里所有文件的后缀名
可以利用dos批处理,步骤如下:1、打开要修改后缀的文件夹,右键选择新建文本文件;2、输入ren *.* *.修改过后的后缀名,如下图:注意:该命令含义是把所有文件后缀修改为jpg 3、选择文件菜单另存为命令,输入ren.bat,保存类型选择所有文件,点击保存;4、双击运行ren.bat即可,效果如下图:...

如何批量修改多个文件夹及子目录下指定后缀的后缀名
用你这方法。这几千个文件夹里面每一个文件夹都写一个批处理吗?我找到的方法是盘符下的根目录写一个批处理文件。里面写@echo off for \/r %%a in (*.bak) do ren "%%a" "%%~na.txt"bak是要要修改的原文件后缀名。txt是修改后的后缀名。你可以改成自己想要的 ...

相似回答