美好的一天,批處理文件重命名特定文件,在多個文件夾中排除特定的文件
我有一個包含它的電影文件夾中的文件夾。在每個文件夾中,都有視頻文件,.srt用於字幕,jpg用於海報,最後還包括用於所述電影的預告片。
我想一個批處理文件,將:
重命名所有我的「約會專家.MKV .AVI」電影文件以及「污泥齡」到其文件夾的名稱(因爲我重新命名我的文件夾一樣這個「Fight Club(1999)[1080p],所以電影文件和.srt將是相同的名稱,當然它是擴展名)。
將所有* .jpeg * .jpg * .png重命名爲」poster .jpg或poster.png 「
重命名所有拖車文件只是」 Trailer.mp4。我把拖車每個電影的,只要你下載一個,我想刪除凌亂的文件名,如「---搏擊俱樂部 - #TBT預告 - 20世紀福克斯」,只是把它變成「Trailers.mp4
- 。
排除重命名那些已經有「拖車」文件名
每個文件夾名稱看起來就像這樣: 搏擊俱樂部(1999)[1080] .MP4,搏擊俱樂部(1999)[1080] .srt,Fight Club(1999)[1080p] .nfo,poster.jpg,Trailer.mp4。
我做了這個但我遇到了這些:
- 我不能亂拖車文件重命名爲只是「Trailer.mp4」。
- 無法跳過重命名「Trailer.mkv」,它重命名爲文件夾名稱。
請幫助,非常感謝。
@echo off
setlocal EnableDelayedExpansion
cd /D "%~DP0"
echo BASE FOLDER: %cd%
set n=0
for /D %%a in (*) do (
set /A n+=1
cd "%%a"
echo ==================================================================
echo Processing folder: %%a
set movieName=%%~a
except (*Trailer.mp4)
except (*Trailer.mkv)
for %%b in (*.avi *.mp4 *.mkv) do (
ren "%%~b" "!movieName!%%~Xb"
echo Movie file "%%b" renamed to "!movieName!%%~Xb"
for %%b in (*.srt *.sub *.ass *.ssa *.idx) do (
ren "%%~b" "!movieName!%%~Xb"
echo File "%%b" renamed to "!movieName!%%~Xb"
)
for %%b in (*.jpeg *.jpg *.png) do (
ren "%%~b" "!poster.jpg"
echo File "%%b" renamed to "!poster.jpg~Xb"
)
for fname in *Trailer; do
newname=`echo "$fname" | sed 's/Trailer/Trailer/g'`
sed 's/Trailer/Trailer/g' "$fname" >"$newname"
done
cd ..
)
echo ==================================================================
使用更好的編輯器(如[記事本++](https://notepad-plus-plus.org/))正確縮進的代碼。第一個沒有右括號。最後一個是不清楚的bash代碼。用自己兩次代替一個詞? – LotPings
要查找預告片,您可以使用'* Trailer * .avi','* Trailer * .mp4','* Trailer * .mkv'等模式,假設它們的文件名中都包含「Trailer」無論如何,你應該首先搜索它們,並將它們重命名爲「Trailer。*';那麼你可以處理電影文件,這些文件都是那些* not * named'Trailer。*';將'if/I not'放入%%〜nb「==」Trailer「(...)'到第一個循環中以排除已經重命名的文件'Trailer。*'... – aschipfl