2012-02-05 150 views
0

我有一個文件夾,其中有一個格式爲filename.com_XXX_IMG_000.jpg的圖像。這個問題是因爲文件名中有一個.com文件,它將我用來上傳到webspace的軟件弄混了。使用批處理文件重命名文件夾中的多個圖像

我需要創建一個批處理文件,獲取文件夾中的所有圖像,並從filename.com_XXX_IMG_000.jpg => filename_XXX_IMG_000.jpg重命名所有圖像。

任何幫助將是偉大的,在此先感謝。

回答

1

既然你想要做一個批處理文件:

@echo off 

for /f "delims=. tokens=1,2,3" %%f in ('dir /b *.jpg') do (
    setlocal enabledelayedexpansion 

    set part=%%g 

    if "!part:~0,3!"=="com" (
    set oldname=%%f.%%g.%%h 
    set newname=%%f.!part:~4!.%%h 
    echo "!oldname!" -^> "!newname!" 
    ren "!oldname!" "!newname!" 
) 

    endlocal 
) 

的幾個注意事項

  • for循環變量都是單字母的,就像這樣:%f
  • 在批處理文件
  • %必須逃脫,所以%f變成%%f
  • delims=.分裂在.文件名,你的情況分爲三個部分
  • tokens=1,2,3返回一個包含個人姓名的部分(%f%g%h)動態變量處理
  • enabledelayedexpansion開關三個變量
  • 你可以做字符串操作用變量:%foo:~0,3%返回%foo%的前三個字符。
  • 與延遲擴展啓用,您可以訪問使用!代替%
  • >必須轉義或echo改變其值的變量不會打印出來,因此^>
  • 更多一些對String Manipulation in DOS
+0

這工作,但消除了COM而不是之前filename.com_XXX => filename._XXX點。你將如何修改以去除點? – 2012-02-05 16:59:37

+0

@Chill如果你真的通讀我的代碼並眯起你的眼睛,你會看到它。 – Tomalak 2012-02-05 17:05:23

+0

發現它設置了newname = %% f。!part:〜4!。%% h => set newname = %% f!part:〜4!。%% h感謝您的幫助 – 2012-02-05 17:10:15

1

閱讀HELP FOR和嘗試以下操作....

@echo off 
setlocal enabledelayedexpansion 
for %%a in (*.jpg) do (
    set fn=%%~na 
    set fn=!fn:.com=! 
    echo REN "%%a" "!fn!.jpg" 
) 

您需要啓用延遲擴展,因爲您需要擴展for循環內的變量。

循環遍歷當前目錄中的所有jpg文件,併爲每個文件使用~n語法提取其文件名,然後通過用空字符串替換它們來刪除所有發生的.com。閱讀HELP SET

經過多方測試,取出echo命令

+0

+1好,比我的方法更好。 – Tomalak 2012-02-05 17:06:48

+0

感謝您的方法,但我試了一下,但沒有奏效。我有與圖像是相同的文件夾中的批處理文件是正確的? – 2012-02-05 17:15:58

+0

您是否刪除了「ECHO」命令? – 2012-02-05 20:18:10

相關問題