Reputation: 3
Good Day,
I have a folder that contains folders of movies on it. in each folder, there is the video files, .srt for subtitles, jpg for posters and lastly I included Trailers for the said movie.
I want a batch file that will:
Rename all my ".mp4 .mkv .avi" movie files as well as ".srt" into its folder name (since I rename my Folders like this "Fight Club (1999)[1080p], so the movie file and .srt will be of same name, except of course it's extension).
Rename all *.jpeg *.jpg *.png to "poster.jpg or poster.png".
Rename all Trailer files to just "Trailer.mp4. I put Trailers for each of the movies, whenever you download one, I want to remove messy filenames like "---Fight Club - #TBT Trailer - 20th Century FOX" and just turn it into "Trailers.mp4.
Exclude renaming those that already have the "Trailer" filename.
Each of the folder name will look like this: Fight Club (1999)[1080p].mp4, Fight Club (1999)[1080p].srt, Fight Club (1999)[1080p].nfo, poster.jpg, Trailer.mp4.
I made this but I encountered these:
Help please, thanks a lot.
@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 ==================================================================
Upvotes: 0
Views: 2650
Reputation:
Maybe this will help:
@echo off
setlocal EnableDelayedExpansion
cd /D "%~dp0"
echo BASE FOLDER: %cd%
set n=0
for /D %%a in (*) do (
set /A n+=1
PushD "%%a"
echo ==================================================================
echo Processing folder: %%a
set "movieName=%%~a"
rem except (*Trailer.mp4),except (*Trailer.mkv)
for /f "delims=" %%b in (
'dir /B *.avi *.mp4 *.mkv ^|findstr /i /v "Trailer" '
) 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%%~xb" && ^
echo File "%%b" renamed to "poster%%~xb"
)
for /f "delims=" %%b in (
'dir /B "*trailer*" '
) do (
ren "%%~b" "Trailer%%~Xb" && ^
echo Movie file "%%b" renamed to "Trailer%%~Xb"
)
PopD
)
echo ==================================================================
Upvotes: 1