重命名多个jpg文件

时间:2012-08-10 12:19:15

标签: windows-7 batch-file

我有一个带有带时间戳的webcamfiles的目录。它从午夜开始,每分钟都拍一张照片。

0001webcamimage.jpg
0002webcamimage.jpg
0003webcamimage.jpg
...
0059webcamimage.jpg
0100webcamimage.jpg

现在我想将所有带有批处理文件的文件转换为这种格式。顺序很重要。

0001.JPG
0002.jpg
0003.jpg
...
0060.jpg
0061.jpg

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

假设Windows& 4位前缀

setlocal enabledelayedexpansion
for %%f in (*webcamimage.jpg) do (
    set name=%%f
    ren "!name!" "!name:~0,4!.jpg"
)

答案 1 :(得分:1)

以下内容类似于@Alex K.的建议,但不会从原始名称中提取数字。相反,它使用计数器并使用计数器的值形成新名称:

@ECHO OFF
SET /A num=10000
FOR %%I IN (*webcamimage.jpg) DO (
  SET /A num+=1
  SETLOCAL EnableDelayedExpansion
  RENAME "%%I" !num:~-4!.*
  ENDLOCAL
)

请注意,新名称始终以0001.jpg开头。

<强>更新

如果批处理文件与图像不在同一目录中,您可以像这样指定它们的路径:

@ECHO OFF
SET /A num=10000
FOR %%I IN (D:\path\to\images\*webcamimage.jpg) DO (
  SET /A num+=1
  SETLOCAL EnableDelayedExpansion
  RENAME "%%I" !num:~-4!.*
  ENDLOCAL
)

或者,您可以在循环之前添加CD /D命令以更改为图像所在的目录:

@ECHO OFF
CD /D D:\path\to\images
SET /A num=10000
FOR %%I IN (*webcamimage.jpg) DO (
  SET /A num+=1
  SETLOCAL EnableDelayedExpansion
  RENAME "%%I" !num:~-4!.*
  ENDLOCAL
)

如果在完成作业后,您需要更改回调用批处理文件之前处于活动状态的目录,请使用PUSHDPOPD

@ECHO OFF
PUSHD D:\path\to\images
SET /A num=10000
FOR %%I IN (*webcamimage.jpg) DO (
  SET /A num+=1
  SETLOCAL EnableDelayedExpansion
  RENAME "%%I" !num:~-4!.*
  ENDLOCAL
)
POPD

当然,您也可以参数化路径,以便在调用批处理文件时可以在命令行中指定它。方法如下:

@ECHO OFF
SET "imagepath=%~1"
SET /A num=10000
FOR %%I IN ("%imagepath%\*webcamimage.jpg") DO (
  SET /A num+=1
  SETLOCAL EnableDelayedExpansion
  RENAME "%%I" !num:~-4!.*
  ENDLOCAL
)

现在,您可以在命令提示符处或从另一个批处理文件中调用批处理文件,如下所示:

batchname.bat D:\path\to\images

(如果您不知道:如果您从另一个批处理文件调用批处理文件,则可能需要在调用批处理文件的名称之前添加CALL,即CALL batchname parameters 。)

答案 2 :(得分:-1)

使用linux,使用重命名:

rename 'webcamimage' '' *.jpg