我经常要批量重命名文件夹中的图像,使其名称至少由两位数字组成,例如01.jpg
、02.jpg
、03.jpg
。。。140.jpg
。
我想使用批处理文件来实现它
我发现了一些代码,但它只是重命名它的前8个图像。
@echo off
set i=1
for %%f in (*.jpg) do call :renameit "%%f"
goto done
:renameit
IF 1%i% LSS 1000 SET i=0%i%
ren %1 %i%.jpg
set /A i+=1
:done
如果目录中绝对没有1.jpg
和01.jpg
,并且包含*.jpg
文件的目录中也从来没有a.jpg
、b.jpg
等,则可以在批处理文件中使用单个命令行来完成此任务。
@for %%I in (?.jpg) do @ren %%I 0%%I
为了使批处理文件更有用,例如将其添加到Send To文件夹中,并通过上下文菜单(右键单击)在包含JPEG图像文件的一个或多个选定目录上使用它,可以扩展它以支持可选的一条或多条文件夹路径作为参数。
@echo off
set "Folder=%CD%"
:NextFolder
if not "%~1" == "" set "Folder=%~f1"
if "%Folder:~-1%" == "" set "Folder=%Folder:~0,-1%"
for %%I in ("%Folder%?.jpg") do ren "%%~fI" "0%%~nxI"
shift
if not "%~1" == "" goto NextFolder
set "Folder="
此批处理文件重命名*.jpg文件,默认情况下仅在当前目录中使用单个字符作为文件名。但是,如果使用1个或多个文件夹路径调用批处理文件(未验证),则批处理文件将重命名所有指定文件夹中的?.jpg
文件。
传递到批处理文件的文件夹路径可以是相对路径或绝对路径,末尾可以带有或不带有反斜杠。
为了理解所使用的命令及其工作方式,请打开命令提示符窗口,在那里执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面。
echo /?
for /?
goto /?
if /?
ren /?
set /?
shift /?
请注意:批处理文件不是100%防故障的,因为它不会验证文件夹路径或仅以单个字符作为文件名的*.jpg文件,也不会检查是否存在具有新文件名的文件。但是,如果出现错误,则会打印错误消息,就像已经存在具有新名称的文件一样。
@echo off
set i=1
for %%f in (*.jpg) do call :renameit "%%f"
goto :eof
:renameit
if 1%i% lss 100 (ECHO ren %1 0%i%.jpg) else (ECHO ren %1 %i%.jpg)
set /A i+=1
goto :eof
直接重命名,没有临时变量。如果输出正常,则移除ECHO
s。
此答案是stephan 发布的答案的联合
@echo off
set i=1
for %%f in (*.jpg) do call :renameit "%%f"
goto done
:renameit
IF 1%i% LSS 100 (SET new=0%i%) else (SET new=%i%)
ren %1 %new%.jpg
set /A i+=1
:done