簡體   English   中英

如何使用powershell批量重命名文件以刪除特殊字符

[英]How to batch rename files to remove special characters with powershell

只是想改變一堆開頭的文件

02. SongName.Mp3
02 - OtherName.Mp3
02 MoreNames.Mp3
03. Song.mp3
03 - Songs.mp3

SongName.Mp3
OtherName.Mp3
MoreNames.Mp3
Song.mp3
Songs.mp3

我知道這是一個非常簡單的 [ren] 命令,但它正在逃避我的腦尖。 我在文件夾上使用 file>open>powershell,所以不需要使用 dir 或 cd 或任何東西。

Get-ChildItem *.mp3 | Rename-Item -NewName { $_.Name -replace '^[^\p{L}]+' } -WhatIf

注意:上面命令中的-WhatIf常用參數預覽操作。 一旦您確定操作會執行您想要的操作,請刪除-WhatIf

以上通過從文件名中刪除第一個字母\\p{L}之前的任何字符來重命名*.mp3文件; 名稱已經以字母開頭的文件保持不變。

使用的技術:

我來試試看。 假設所有文件都是 mp3,將數字、點、破折號和空格替換為空。 (或“復制項目-目的地”)

# test files
# echo hi | set-content '02. SongName.Mp3','02 - OtherName.Mp3','02 MoreNames.Mp3','03. Song.mp3','03 - Songs.mp3'

dir *.mp3 | rename-item -newname { ($_.basename -replace '[\d\.\- ]') + '.mp3' } -whatif

What if: Performing the operation "Rename File" on target "Item: /Users/js/foo/02 - OtherName.Mp3 Destination: /Users/js/foo/OtherName.mp3".
What if: Performing the operation "Rename File" on target "Item: /Users/js/foo/02 MoreNames.Mp3 Destination: /Users/js/foo/MoreNames.mp3".
What if: Performing the operation "Rename File" on target "Item: /Users/js/foo/02. SongName.Mp3 Destination: /Users/js/foo/SongName.mp3".
What if: Performing the operation "Rename File" on target "Item: /Users/js/foo/03 - Songs.mp3 Destination: /Users/js/foo/Songs.mp3".
What if: Performing the operation "Rename File" on target "Item: /Users/js/foo/03. Song.mp3 Destination: /Users/js/foo/Song.mp3".

   Get-ChildItem *.mp3 |
     Where-Object Name -match '^.{4}(.+).\.(.+)$' | 
       Copy-Item -Destination { $Matches.1 + '.' + $Matches.2 }

這適用於我正在嘗試做的事情。 特別注意,它復制文件,不會重命名現有文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM