枚举带有前导零的文件夹中的jpg图像

时间:2016-07-27 08:52:47

标签: batch-file batch-rename

我经常在文件夹中批量重命名图像,使得名称至少包含两个数字,例如01.jpg02.jpg03.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

3 个答案:

答案 0 :(得分:1)

如果目录中绝对没有1.jpg01.jpg,并且永远不会a.jpg,{{1}含有b.jpg文件的目录中的等等。

*.jpg

要使批处理文件更有用,例如将其添加到发送到文件夹并通过上下文菜单(右键单击)在包含JPEG图像文件的一个或多个选定目录中使用它,可以将其扩展支持可选的一个或多个文件夹路径作为参数。

@for %%I in (?.jpg) do @ren %%I 0%%I

此批处理文件默认仅在当前目录中使用单个字符作为文件名重命名* .jpg文件。但是,如果使用一个或多个文件夹路径(未验证)调用批处理文件,批处理文件将重命名所有指定文件夹中的@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
  • echo /?
  • for /?
  • goto /?
  • if /?
  • ren /?
  • set /?

请注意:批处理文件不是100%故障安全,因为它不验证文件夹路径或找到的只有一个字符作为文件名的* .jpg文件,也不会检查新文件已存在的文件文件名。但是,如果发生错误,则会打印错误消息,例如已存在具有新名称的文件。

答案 1 :(得分:0)

@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

答案 2 :(得分:0)

这个答案是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