我有数千集想要重命名的剧集,它们都是类似的格式。
如果我必须手动完成此操作,这将花费很长时间。
因此我需要一个简单的方法来批量重命名以下示例:
[来源]系列名称_-_001_剧集名称_[480p][DVD][上传者]
[来源]系列名称_-_010_剧集名称_[720p][BD][上传者]
[来源]系列名称_-_100_剧集名称_[1080p][BD][上传者]
只是:
系列名称 第 1 集 - EpisodeName
系列名称 第 10 集 - EpisodeName
系列名称 第 100 集 - EpisodeName
我怎样才能实现这个目标?
答案1
出于排序原因,我会保持剧集编号的长度不变。
那么扩展怎么样(我的一行代码保留了它们)?
在命令行中:
for %F in ([*) do @for /f "tokens=2-4 delims=-_[]" %A in ("%F") do @echo Ren "%~fF" "%A Episode %B - %C%~xF"
示例输出:
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_001_EpisodeName_[480p][DVD][Uploader]" "SeriesName Episode 001 - EpisodeName"
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_100_EpisodeName_[1080p][BD][Uploader]" "SeriesName Episode 100 - EpisodeName"
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_010_EpisodeName_[720p][BD][Uploader]" "SeriesName Episode 010 - EpisodeName"
在批处理文件中,将所有百分号加倍。
第一个 for 迭代所有以 a 开头的项目[
第二个 for 在所有指定的分隔符处拆分名称(相邻的分隔符仅算作一个),仅取第二到第四个。ren 命令仅出于安全原因才回显。如果输出正常,则删除回显。
编辑:此批处理文件版本删除前导零:
:: SU1310869.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
:: cd /d "X:\folder\episodefiles
for %%F in ([*) do @for /f "tokens=2-4 delims=-_[]" %%A in ("%%F") do (
set /a Num=1%%B - 1000
@echo Ren "%%~fF" "%%A Episode !Num! - %%C%%~xF"
)