【发布时间】:2023-11-21 18:48:01
【问题描述】:
我的硬盘上有大约 400 部电影,但这些电影的名称之间包含点或下划线,例如“wrong_turn.mkv”或“wrong.turn.mkv”。我只想从文件名中删除这些点或特殊字符并保持扩展名不变。 任何命令行命令或 Powershell/Python 或任何其他 Windows 脚本?谢谢。
【问题讨论】:
标签: windows file powershell command-line
我的硬盘上有大约 400 部电影,但这些电影的名称之间包含点或下划线,例如“wrong_turn.mkv”或“wrong.turn.mkv”。我只想从文件名中删除这些点或特殊字符并保持扩展名不变。 任何命令行命令或 Powershell/Python 或任何其他 Windows 脚本?谢谢。
【问题讨论】:
标签: windows file powershell command-line
在 PowerShell 中,您可以将 Rename-Item 与确定新名称的脚本块一起使用。
dir -Recurse -Include *.mkv | Rename-Item -NewName { expression to determine new name }
脚本块中的表达式可以使用 $_ 来引用当前的 FileInfo 对象。
更具体地说:
dir -Recurse -Include *.mkv | Rename-Item -NewName { $_.Name.Replace('_', ' ') }
使用 Rename-Item -WhatIf 直到正确为止。
【讨论】:
如果您拥有的两个文件位于同一目录中,则从第一个文件中删除 _ 将起作用,但是当您尝试从第二个文件中删除点时,它将失败,因为它的名称与第一个。也许这是一个边缘情况,所以这是基本的解决方案:
Get-ChildItem -Filter *.mkv | Rename-Item -NewName {($_.BaseName -replace '\.|_') + $_.Extension}
【讨论】: