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

时间:2015-01-22 04:06:57

标签: windows batch-file file-rename batch-rename

我正在尝试解组一系列名为的视频文件:

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和批处理文件吗?或者我需要特殊软件吗?谢谢!

2 个答案:

答案 0 :(得分:0)

使用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"在中间,然后在最后组合文件名和扩展名。

答案 1 :(得分:0)

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

如果你知道你的.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"