我想重命名一些扩展名为powershell的扩展名

时间:2015-02-12 06:00:53

标签: powershell rename-item-cmdlet

我想将几个文件的扩展名从.cap更改为.zip。我在powershell中写了以下代码:

Copy-Item $sourceFileLocation\*.cap $Temp -Force

但是如果已经存在扩展名为.zip的相同文件呢? 它在控制台上出现以下错误:

Rename-Item : Cannot create a file when that file already exists.
At E:\ExtractHashId.ps1:32 char:23
+     dir $Temp\*.cap | Rename-Item -NewName{$_.Name -replace ".cap", ".zip"}
+                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Users\v-kamo...News_Locals.cap:String) [Rename-Item], IOException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

那么我需要做些什么才能覆盖这些文件?

1 个答案:

答案 0 :(得分:0)

$SourceFile = "X:\Source\Folder\*.cap"
$Dest = "X:\Destination\Folder"
Get-ChildItem $SourceFile | Foreach {Copy-item $_ "$Dest\$($_.Name -replace ".cap", ".zip")" -Force}

应该给你想要的效果。

问题在于,您希望在文件移动或复制后重命名文件,而另一个文件存在新名称。这不可能发生,你会得到那个错误。以上操作是在传输过程中重命名文件。这意味着写入目标文件夹的文件是具有新扩展名的文件,因此您可以在此处覆盖现有文件。