我尝试重命名一堆文件(也在子文件夹中),以便为我的媒体播放系统(Plex)识别电影文件。
之前:
之后:' TBBT - S06E09 - 停车位Escalation.mkv'
我只想点击一下就重命名完整的节目,所以基本上我试图改变
'季节'到了' S'和'插曲'到' E'
以下是我的尝试:
for /r %%x in (*Season 0* Episode 0*) do ren "%%x" *S0*E0*
首先尝试用下划线替换空格我只得到一些混淆结果: ' TBBT _-_ Season_06_Episode_09 _-_ The_Parking_S的 0 ot_E的 0 calation'
不幸的是我被困在这里......
答案 0 :(得分:1)
您可以使用以下内容:
Setlocal enabledelayedexpansion
Set "Pattern1=Season "
Set "Pattern2= Episode "
Set "Replace1=S"
Set "Replace2=E"
For %%# in ("C:\Folder\*.mkv") Do (
Set "File=%%~nx#"
Ren "%%#" "!File:%Pattern1%=%Replace1%!"
echo %File%
)
For %%# in ("C:\Folder\*.mkv") Do (
Set "File=%%~nx#"
Ren "%%#" "!File:%Pattern2%=%Replace2%!"
如果你愿意,使用powershell会更容易:
dir "c:\Folder" -file -recurse | rename-item -NewName {$_.name.Replace('Season ','S').replace(' Episode ', 'E')}
答案 1 :(得分:0)
由于this comment这里的Python方法似乎可以接受,所以它是。
假设目录结构如下:
.
├── Season1Episode1.mkv
├── Season2Episode2.mkv
└── subfolder
├── Season1Episode1.mkv
└── Season2Episode2.mkv
运行下面给出的Python脚本后,文件会根据需要重命名:
.
├── S1E1.mkv
├── S2E2.mkv
└── subfolder
├── S1E1.mkv
└── S2E2.mkv
Python3脚本如下:
#!/usr/bin/env python3
# coding: utf-8
import os
# rename files or just see how files would be renamed?
DRY_RUN = True
# specify file extension and replacements
EXTENSION = '.mkv'
REPLACE = [('Season', 'S'), ('Episode', 'E')]
# walk through directory and handle files
for path, subdirs, files in os.walk('.'):
for name in files:
if name.endswith(EXTENSION):
full_path = os.path.join(path, name)
new_path = full_path
for i in REPLACE:
new_path = new_path.replace(i[0], i[1])
print('{} --> {}'.format(full_path, new_path))
if not DRY_RUN:
os.rename(full_path, new_path)
应该在包含要重命名的文件的根目录中保存和执行脚本。尽管有Python3,但不需要额外的东西。设置DRY_RUN = True
以模拟重命名文件,而DRY_RUN = False
将重命名找到的文件。