2015-10-21 66 views
2

我想刪除多個文件名的最後11個字符。例如 我有這些文件的名稱:Powershell - 通過刪除最後幾個字符來重命名文件名

ABCDE_2015_10_20 
HIJKL_2015_10_20 
MNOPQ_2015_10_20 
RSTUV_2015_10_20 

想將它們重新命名爲

ABCDE 
HIJKL 
MNOPQ 
RSTUV 

我已經使用follwing代碼嘗試:

Get-ChildItem 'E:\Thomson Reuters\Stage' | rename-item -newname { [string]($_.name).substring($_.name.length -14) } 

任何人能告訴我在哪裏我錯了嗎?

+0

而你所做的任何嘗試這種解決自己呢? – arco444

+0

是的 - 我可以刪除從文件名開始的字符,但不是最後使用以下內容:Get-ChildItem'E:\ Thomson Reuters \ Stage'| rename-item -newname {[string]($ _。name).substring($ _。name.length -14)} –

+0

請[edit](http://stackoverflow.com/posts/33255834/edit)然後用你到目前爲止寫的代碼進行更新 – arco444

回答

3

就快,你只需要告訴substring究竟從哪裏開始和結束:

Get-ChildItem 'E:\Thomson Reuters\Stage' | rename-item -newname { $_.name.substring(0,$_.name.length-11) } 

通過傳遞兩個整數到substring你給它startIndex和長度要捕獲的字符串。 See here的文檔

1

剛剛從arco444添加到響應:

Get-ChildItem 'E:\Thomson Reuters\Stage' -filter *.txt | rename-item -NewName {$_.name.substring(0,$_.BaseName.length-6) + $_.Extension -replace "_"," "} 

這將重命名所有.txt文件的目錄,刪除文件名的最後6個字符,替換任何剩下強調了文件名帶有空格但仍保留文件擴展名。

因此,假設這些是文本文件,你會看到這樣的內容:

ABCDE_2015_10_20.txt 
HIJKL_2015_10_20.txt 
MNOPQ_2015_10_20.txt 
RSTUV_2015_10_20.txt 

成爲這樣的:

ABCDE 2015.txt 
HIJKL 2015.txt 
MNOPQ 2015.txt 
RSTUV 2015.txt 
相關問題