0 powershell file-extension batch-file batch-rename subdirectory
我使用以下代码一次批量更改一个文件夹中的一个扩展名。
Dir *.mkv | rename-item -newname { $_.name -replace ".mkv",".vlc" }
我想要的是能够有一行代码
将所有文件扩展名类型更改为一种文件扩展名
在子文件夹中包含文件
对此的任何帮助将不胜感激,谢谢
用于-Recurse包含子文件夹。使用BaseName不带扩展名的文件名。
阅读文档以获取更多信息
Get-ChildItem *.mkv -Recurse | Rename-Item -NewName {"$($_.BaseName).vlc"}
Run Code Online (Sandbox Code Playgroud)
编辑
抱歉,我错过了这一部分:
将所有文件扩展名类型更改为一种文件扩展名
要更改所有文件扩展名,您只需排除*mkv但正如LotPings 的答案所涵盖的那样,不建议这样做;更改您不想要的文件的扩展名非常容易。他介绍了如何使用-Include参数,这是推荐的方式,因为它会在早期进行过滤。
为了展示另一种方式,您可以使用该Extension属性。这允许您利用所有 PowerShell比较运算符- 示例如下。
Get-ChildItem -Recurse | Where-Object {$_.Extension -eq ".mkv"}
Get-ChildItem -Recurse | Where-Object {$_.Extension -in @(".mkv",".avi")}
Get-ChildItem -Recurse | Where-Object {$_.Extension -ne ".vlc"}
Run Code Online (Sandbox Code Playgroud)