我经常在文件夹中批量重命名图像,使得名称至少包含两个数字,例如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
答案 0 :(得分:1)
如果目录中绝对没有1.jpg
和01.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