如何使用PowerShell批量去除文件名末尾的多余标识部分?
嘿,折腾5小时还没搞定确实闹心——这种批量重命名的问题,尤其是文件名格式有点杂的时候,很容易卡壳。我给你几个靠谱的方案,覆盖不同平台,你挑顺手的来:
方法1:Python脚本(跨平台,最灵活)
如果你电脑上装了Python(没有的话官网装一个也很快),这个方法最稳妥,能精准匹配你说的末尾“-+一串字符”(看起来是YouTube的视频ID对吧?)。
步骤很简单:
- 在你的视频文件夹里新建一个文本文件,改名叫
rename_files.py - 把下面的代码粘进去:
import os import re # 正则匹配末尾的 "-[字母数字下划线串].mp4" 模式 pattern = re.compile(r'-(?=[A-Za-z0-9_-]+)\.mp4$') # 遍历当前文件夹的所有文件 for filename in os.listdir('.'): # 只处理MP4文件 if filename.endswith('.mp4'): # 替换匹配到的部分,保留.mp4后缀 new_filename = pattern.sub('.mp4', filename) # 只有文件名变化时才重命名,避免重复操作 if new_filename != filename: os.rename(filename, new_filename) print(f"✅ 重命名成功:{filename} → {new_filename}")
- 打开命令行(Windows用CMD/PowerShell,Mac/Linux用终端),导航到这个文件夹(比如
cd D:\我的视频) - 运行命令:
python rename_files.py
这个脚本的正则会精准定位最后一个-后面跟着的那串视频ID,直接去掉,完全保留前面的文件名部分。
方法2:PowerShell(Windows原生,无需额外软件)
如果你用Windows,不想装Python,直接用系统自带的PowerShell就能搞定:
- 打开PowerShell,输入
cd 你的视频文件夹路径(比如cd C:\Users\你\Videos)进入目标文件夹 - 复制粘贴下面的命令回车就行:
Get-ChildItem -Filter *.mp4 | Rename-Item -NewName { $_.Name -replace '-(?=[A-Za-z0-9_-]+)\.mp4$', '.mp4' }
逻辑和Python脚本完全一致,用正则匹配并替换末尾的ID部分。
方法3:Bash命令(Mac/Linux终端)
Mac或者Linux用户直接在终端里操作就行:
- 打开终端,用
cd命令进入你的视频文件夹 - 运行下面的命令:
for file in *.mp4; do new_name=$(echo "$file" | sed 's/-\([A-Za-z0-9_-]*\)\.mp4$/.mp4/') if [ "$new_name" != "$file" ]; then mv "$file" "$new_name" echo "✅ 重命名:$file → $new_name" fi done
小提醒
建议先拿几个文件备份测试一下,确保正则匹配符合你的所有文件名格式,避免误改。如果遇到个别特殊格式的文件,稍微调整正则里的字符范围就行(比如如果有其他符号,加到[A-Za-z0-9_-]里)。
内容的提问来源于stack exchange,提问作者Nikola Armyanov
相关产品推荐
相关产品推荐

