我有一个带有带时间戳的webcamfiles的目录。它从午夜开始,每分钟都拍一张照片。
0001webcamimage.jpg
0002webcamimage.jpg
0003webcamimage.jpg
...
0059webcamimage.jpg
0100webcamimage.jpg
现在我想将所有带有批处理文件的文件转换为这种格式。顺序很重要。
0001.JPG
0002.jpg
0003.jpg
...
0060.jpg
0061.jpg
有人可以帮助我吗?
答案 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
)
如果在完成作业后,您需要更改回调用批处理文件之前处于活动状态的目录,请使用PUSHD
和POPD
:
@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