0

我想将一些文件的扩展名从 .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

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

4

1 回答 1

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

应该会给你想要的效果。

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

于 2015-02-12T09:45:05.560 回答