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

问题描述:

我对编码和批量处理非常新,但我正在为Windows命令提示符寻找一个命令行,我想知道是否存在这样的事情。所以我有一个包含111个子文件夹的文件夹,每个子文件夹包含20到40个PNG图像文件。每个子文件夹相应地命名为001-111,并且png文件按照我希望的方式排列,但是我正在寻找一种命令行,它能够快速有效地将文件夹中的所有png命名为该文件夹的名称,然后是括号内的png号码批量重命名与文件夹名称有关的文件

eg对于文件夹037,我希望巴新的重命名为:037(1),037(2),037(3)等等

我希望最好虽然我不确定这样的代码可能不可行或者简单地完成。

另外,如果你想出一个能够实现这个过程的代码,如果你能回复我可以使用的简单命令行而不是完整的解释,那将是非常好的,因为我是新手,而且很不流利语言或术语或工作方式。我知道这个过程可以通过选择全部>重命名(ctrl a> f2)并重命名为文件夹名称来实现,但是我需要经常使用此过程并且不想打开每个文件夹,我宁愿拥有对于CMD命令行,会做它迅速

谢谢你,一个简单的答案,将不胜感激

+0

http://*.com/questions/16248730/how-to-bulk-rename-files-within-subfolders-using-cmd-command-prompt – Paul

+0

[哲学]这是一种悲伤的状态人们不想知道,也不想知道。但我承认在涉及汽车的时候也是一样的。当这种越来越普遍的态度发生在那些自称有资格参与讨论的主题的人身上时,这变得很悲惨。我们不能都是艾迪逊人,但如果每个人都采取这种态度,我们仍然会生活在洞穴中。[/哲学] – Magoo

+0

请注意,1,2,3,4,5,6,7,8,9 ,10,11将不会在文件夹中正确排序。通常的解决方案是填充0001 0002中的文件名 – foxidrive

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

renamepng.bat:

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

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

然后调用它像这样:

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

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

@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关键字。