2012-08-10 90 views
1

我有一個帶有時間戳的webcam文件夾。它從午夜開始,每分鐘拍攝一張照片。重命名多個jpg文件

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

現在我想所有的文件轉換以分批文件轉換爲這種格式。序列很重要。

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

有人能幫助我嗎?

+1

Linux/Windows/MacOSx? – matteomattei 2012-08-10 12:22:17

+0

難道你不能只用一些現成的改名者嗎? – 2012-08-10 12:22:21

+0

你需要爲此使用一個腳本還是你想寫一個程序? – 2012-08-10 12:25:38

回答

-1

有了Linux,使用重命名:

rename 'webcamimage' '' *.jpg 
+0

我使用Windows 7 – Geert 2012-08-10 13:33:51

+0

-1假設平臺 – BryanH 2012-08-10 20:32:08

+0

@BryanH有點苛刻,不是? – 2012-08-10 21:56:41

1

假設的Windows & 4位前綴

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

這很好。不要忘記把這個腳本放到帶有照片的文件夾中。 – LLAlive 2012-08-10 13:19:50

+0

出了點問題。我得到這個輸出。 0001.jpg 0002.jpg 0003.jpg 。 。 0058.jpg 0059.jpg 0100.jpg 0101.jpg 0102.jpg 0059.jpg後,我需要0060.jpg – Geert 2012-08-10 13:31:03

+0

所以0100webcamimage.jpg必須0060.jpg – Geert 2012-08-10 13:38:18

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開始。

UPDATE

如果批處理文件不在同一個目錄中的圖片,也可以指定這樣的路徑對他們說:

@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 

,當然,你可以parametrise的路徑,以及使您可以在指定它命令行調用批處理文件時。具體方法如下:

@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。)

+0

這就是完美!現在我必須將批處理文件放在同一個目錄中。當圖像位於此目錄中時,如何更改批處理文件。 C:\ FFMPEG \ IMAGES – Geert 2012-08-13 05:46:08

+0

您可以在循環前指定路徑和'* webcamimage.jpg'掩碼,或者您可以將'CD/D'指定到該目錄(或者,'PUSHD',然後'POPD',如果您需要回到您要從中調用批處理文件的目錄,請參閱我的更新以獲取詳細信息和示例。 – 2012-08-13 10:38:04

+0

感謝您的幫助Andriy。現在一切正常。 – Geert 2012-08-15 14:47:14