使用批量重命名从文件名中间删除文本

Removing text from the middle of a file name with batch renaming

我正在尝试整理一系列这样命名的视频文件:

Something or Other.s1e1.mp4
Another title.s1e2.mp4
...
Yet More Titles.s1e87.mp4

等等。我想要做的是删除文件名的 "s1eNUM" 部分并将其恢复正常,所以我会得到 "Something or Other.mp4" 和 "Yet More Titles.mp4" 等等。

可以使用 Windows 命令行、ren 和批处理文件来完成吗?或者我需要特殊的软件吗?谢谢!!

使用 for 命令。

@echo off
set YourFileName=title.s1e2.mp4
for /f "tokens=1 delims=." %%x in ("%YourFileName%") do (set filename1=%%x)
for /f "tokens=3 delims=." %%x in ("%YourFileName%") do (set filename2=%%x)
echo %filename1%.%filename2%

rename C:\PATH\%YourFileName% %filename1%.%filename2%

pause>nul

这应该去掉中间的"s1eNum",然后在最后合并文件名和扩展名。

我会发明一个术语,节点是点之前、之后或之间的任何文本。所以 "Other.s1e1.mp4" 会有 3 个节点,最后一个是文件扩展名。

如果您知道 none 个 .mp4 文件有超过 3 个节点,那么您只需要一个简单的 REN 命令。

请参阅 How does the Windows RENAME command interpret wildcards 以了解其工作原理的解释。请注意,您必须有足够的 ? 个字符才能匹配或超过找到的最大节点 1 的长度。

ren *.*.mp4 ?????????????????????????????????????????.mp4

如果您的文件可能有超过 3 个节点,并且您想要删除倒数第二个(倒数第二个)节点,那么可以使用 2 个嵌套循环:

for /f "eol=: delims=" %%A in ('dir /b /a-d *.*.mp4') do for %%B in ("%%~nA") do ren "%%B" "%%~nA.mp4"