批处理文件重命名特定文件,排除多个文件夹中的特定文件
Batch file to rename specific files, exclude specific files in multiple folders
美好的一天,
我有一个包含电影文件夹的文件夹。在每个文件夹中,都有视频文件,.srt 用于字幕,jpg 用于海报,最后我包含了所述电影的预告片。
我想要一个批处理文件:
将我所有的“.mp4 .mkv .avi”电影文件以及“.srt”重命名为文件夹名称(因为我将我的文件夹重命名为“Fight Club (1999)[1080p ], 所以电影文件和 .srt 将具有相同的名称,当然它的扩展名除外)。
将所有 *.jpeg *.jpg *.png 重命名为 "poster.jpg or poster.png".
将所有预告片文件重命名为 "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”并将其转换为“Trailers.mp4。
排除重命名那些已经有 "Trailer" 文件名的文件。
每个文件夹名称如下所示:
搏击俱乐部 (1999)[1080p].mp4, 搏击俱乐部 (1999)[1080p].srt, 搏击俱乐部 (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 ==================================================================
也许这会有所帮助:
@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 ==================================================================
美好的一天,
我有一个包含电影文件夹的文件夹。在每个文件夹中,都有视频文件,.srt 用于字幕,jpg 用于海报,最后我包含了所述电影的预告片。
我想要一个批处理文件:
将我所有的“.mp4 .mkv .avi”电影文件以及“.srt”重命名为文件夹名称(因为我将我的文件夹重命名为“Fight Club (1999)[1080p ], 所以电影文件和 .srt 将具有相同的名称,当然它的扩展名除外)。
将所有 *.jpeg *.jpg *.png 重命名为 "poster.jpg or poster.png".
将所有预告片文件重命名为 "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”并将其转换为“Trailers.mp4。
排除重命名那些已经有 "Trailer" 文件名的文件。
每个文件夹名称如下所示: 搏击俱乐部 (1999)[1080p].mp4, 搏击俱乐部 (1999)[1080p].srt, 搏击俱乐部 (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 ==================================================================
也许这会有所帮助:
@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 ==================================================================