批量重命名与文件夹名称相关的文件

时间:2013-06-28 05:08:02

标签: cmd rename subdirectory bulk

我是编码和批量处理的新手,但我正在为Windows命令提示符寻找一个命令行,我想知道是否存在这样的事情。所以我有一个包含111个子文件夹的文件夹,每个子文件夹包含20到40个png图像文件。每个子文件夹相应地命名为001-111并且png文件按我想要的方式排序,但是我正在寻找能够快速有效地将文件夹中的所有png命名为文件夹名称的命令行。括号中的png编号

e.g。对于文件夹037,我希望将png重命名为: 037(1),037(2),037(3)等......

我希望尽力而为,但我不确定这样的代码是不可能的,或者只是简单地完成。

此外,如果您想出一个能够实现此过程的代码,那么如果您能够使用我可以使用的简单命令行回复而不是完整的解释,那将会很棒。因为我是编码的新手并且远非流利的语言或术语或事物如何运作。我知道同样的过程可以通过选择所有>重命名(ctrl a> f2)并重命名为文件夹名称来实现,但我需要经常使用此过程而不想打开每个文件夹,我宁愿有一个cmd命令行,可以快速完成

谢谢你,非常感谢一个简单的答案

2 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "parentdir=u:\parent"
FOR /l %%a IN (1001,1,1111) DO (
 SET dir=%%a&SET "dir=!dir:~1!"
 FOR /f "delims=" %%i IN ('dir /a-d /b "%parentdir%\!dir!\*.png" 2^>nul') DO (
  ECHO REN "%parentdir%\!dir!\%%~nxi" "!dir!(%%~ni)%%~xi"
 )
)
GOTO :EOF

测试结果:
起始目录:

u:\parent\001\1.png
u:\parent\037\1.png
u:\parent\037\2.png
u:\parent\111\999 with spaces in name.png

脚本回复

REN "u:\parent\001\1.png" "001(1).png"
REN "u:\parent\037\1.png" "037(1).png"
REN "u:\parent\037\2.png" "037(2).png"
REN "u:\parent\111\999 with spaces in name.png" "111(999 with spaces in name).png"

显然,您需要将分配给parentdir的值替换为您的实际目标目录名称。

该脚本将报告它建议执行的重命名。要实际调用rename,请删除ECHO关键字。

答案 1 :(得分:0)

我会像这样创建一个批处理文件:

renamepng.bat:

cd %%1
if ERRORLEVEL 1 goto end
for %f in *.png do mv "%f" "%%1(%f).png" 
cd ..
:end

这将尝试cd到命令行提供的目录名,如果失败则中止,然后重命名所有.png文件并返回上一个目录

然后这样称呼它:

for %d in ??? do call renamepng.bat %d

将遍历当前目录中的所有3个字符的文件和目录名称,可以在每个文件和目录名称上调用批处理文件。使用调用而不仅仅是批处理文件名会导致执行在批处理完成时返回循环。