2012-05-01 71 views
0

我需要遞歸地重命名一堆擴展名爲「.cop」(用於複製)的文件並刪除'.cop'字符串。powershell從文件名中刪除最後3個字符

,我從我的get-help rename-item主題閱讀下面的命令:

gci -r -i *.cop | Rename-Item -newname {$_.name -replace '\.cop',''} 

,但我得到一個IO異常錯誤:

Rename-Item : Cannot create a file when that file already exists. 

PowerShell不想要重命名的文件,因爲它已經存在? 這是沒有道理的......任何人都知道我在這裏做錯了嗎?

感謝

回答

1

您需要使用Foreach對象cmdlet:

gci -r -i *.cop | % {ren $_ -newname $_.Name.Replace(".cop", "") -whatif} 
+0

不錯的一個克里斯非常感謝。 出於好奇,最後一個問題有人可以解釋$ _。Name.Replace的用法嗎?它是什麼 ?某種變量命令? PowerShell如何命名這些?我在哪裏可以找到一個列表,顯示所有可能的變量(或其他所謂的變量)?歡呼聲 – Bluz

+1

PowerShell - 特殊字符和令牌 - http://www.neolisk.com/techblog/powershell-specialcharactersandtokens –

+0

謝謝克里斯,但這並不完全是我的意思。我知道這些點我不只是不熟悉語法$ _。var.command和$ _。Name.Replace並且想知道是否有一個'commands'列表,您可以'附加'到一個var,就像你做了$ _。Name.Replace。 – Bluz

0

你的代碼爲我工作。確保你沒有一個目錄的文件名被重命名。

相關問題