![](/img/trans.png)
[英]How to rename files with special character in windows batch script?
[英]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
文件; 名稱已經以字母開頭的文件保持不變。
使用的技術:
傳遞給-NewName
的延遲綁定腳本塊( { ... }
),為Get-ChildItem
發出的每個System.IO.FileInfo
輸入對象求值,綁定到自動變量$_
基於正則表達式的-replace
運算符。
我來試試看。 假設所有文件都是 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.