[英]Windows PowerShell Batch File Rename
目前,我手動瀏覽每個文件並使用通用重命名過程對其進行更新。
我只是開始嘗試弄清楚如何使用Windows PowerShell來重命名具有共同結構的一堆文件。 問題是,我見過的所有示例都使用通用擴展替換某些內容。 我想刪除擴展名后的所有內容,並且出現錯誤。
例子:
64244350.NSFM3V@.NO_BATCHES.20150108073838322
64244882.NSFM3V@.NO_BATCHES.20150108073534804
我希望它最終像是:
64244350.NSFM3V
64244882.NSFM3V
.NSFM3V是所有文件中的常見因素,但是前后存在隨機性。 這是我在PowerShell中創建內容的第一次嘗試:
Get-ChildItem *.NSFM3V* | Rename-Item -NewName {$_name -Replace *.{$_name}.*,""}
我的Get-ChildItem .NSFM3V可以從文件夾中獲取所有文件,但無法重命名。
謝謝你的時間!
您可以這樣做:
gci *.NSFM3V* | rename-item -newname { $_.name -replace '(.*)@.*', '$1' }
使用正則表達式獲取@
的左側並將其用於替換中。
gci
任何匹配項都將傳遞到管道,傳遞的對象將被賦予特殊變量$_
Rename-Item
從管道中獲取對象$_
並使用{..}
的替換來制作新名稱 -replace
內的正則表達式采用對象的name
屬性並應用替換 (.*)
表示匹配任何內容 。 注意方括號,這些很重要,因為它們構成了一個捕獲小組 @.*
表示匹配@
后跟任何內容 @
之后的所有內容 '$1'
是對捕獲組的引用,因此從本質-NewName
,您將整個$_.name
-NewName
值替換為(最后一個) @
所有內容,並將其傳遞給-NewName
參數 一種不使用正則表達式方法的簡單替代方法,這通常會使閱讀/理解困難。
Get-ChildItem *.NSFM3V* | Rename-Item -NewName {($_.Name -split "@")[0]}
GJ干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.