我有一個文件夾,其中有一個格式爲filename.com_XXX_IMG_000.jpg的圖像。這個問題是因爲文件名中有一個.com文件,它將我用來上傳到webspace的軟件弄混了。使用批處理文件重命名文件夾中的多個圖像
我需要創建一個批處理文件,獲取文件夾中的所有圖像,並從filename.com_XXX_IMG_000.jpg => filename_XXX_IMG_000.jpg重命名所有圖像。
任何幫助將是偉大的,在此先感謝。
我有一個文件夾,其中有一個格式爲filename.com_XXX_IMG_000.jpg的圖像。這個問題是因爲文件名中有一個.com文件,它將我用來上傳到webspace的軟件弄混了。使用批處理文件重命名文件夾中的多個圖像
我需要創建一個批處理文件,獲取文件夾中的所有圖像,並從filename.com_XXX_IMG_000.jpg => filename_XXX_IMG_000.jpg重命名所有圖像。
任何幫助將是偉大的,在此先感謝。
既然你想要做一個批處理文件:
@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
改變其值的變量不會打印出來,因此^>
閱讀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
命令
+1好,比我的方法更好。 – Tomalak 2012-02-05 17:06:48
感謝您的方法,但我試了一下,但沒有奏效。我有與圖像是相同的文件夾中的批處理文件是正確的? – 2012-02-05 17:15:58
您是否刪除了「ECHO」命令? – 2012-02-05 20:18:10
這工作,但消除了COM而不是之前filename.com_XXX => filename._XXX點。你將如何修改以去除點? – 2012-02-05 16:59:37
@Chill如果你真的通讀我的代碼並眯起你的眼睛,你會看到它。 – Tomalak 2012-02-05 17:05:23
發現它設置了newname = %% f。!part:〜4!。%% h => set newname = %% f!part:〜4!。%% h感謝您的幫助 – 2012-02-05 17:10:15