0

我对编码和批量进程非常陌生,但我正在寻找专门用于 Windows 命令提示符的命令行,我想知道是否存在这样的事情。所以我有一个包含 111 个子文件夹的文件夹,每个子文件夹包含 20 到 40 个 png 图像文件。每个子文件夹相应地命名为 001-111,并且 png 文件按照我想要的方式排序,但是我正在寻找一个命令行,它能够快速有效地将文件夹中的所有 png 命名为文件夹的名称,然后括号中的 png 编号

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

我希望最好,尽管我不确定这样的代码可能不可能或简单地完成。

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

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

4

2 回答 2

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

Test results:
Starting directory :

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

Script response

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"

Obviously, you'd need to replace the value assigned to parentdir with your actual target directory name.

The script will report the renames it proposes to do. To actually invoke the rename remove the ECHO keyword.

于 2013-06-28T08:41:53.770 回答
0

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

重命名.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 字符文件和目录名称,可以在每个文件上调用批处理文件。使用 call 而不仅仅是批处理文件名会导致执行在批处理完成时返回到循环。

于 2013-06-28T05:46:26.320 回答