Ошибка, когда я хочу переименовать файлы, созданные в цикле for в PowerShell

Вот мой за кругом

function Generate_bin($input_1, $bin_file_name, $Codes){

   $counter=1 
   foreach ($Code in $Codes)
   {
      Write-Host "Code = $Code" 
      $input_11 = "$input_1" + "$counter"
      $pattern = "0x"
      $New = ""
      $Code = [regex]::replace($Code, $pattern, "$New")
      $bin_file_name2 = "$bin_file_name"
      $bin_file_name2 += "$Code" + ".bin"
      #This utility generates "out.bin"
       Invoke-Command -ScriptBlock {.\xyz.exe -i -t "$input_1"}

      Rename-Item out.bin -NewName $bin_file_name2
      $counter++
   }

}

Я получаю следующую ошибку

Rename-Item : Cannot create a file when that file already exists.
At C:\script\myParser_unique.ps1:18 char:7
+       Rename-Item out.bin -NewName $bin_file_name2
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Users\v-ashi...Unified\out.bin:String) [Rename-Item], IOException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

1 ответ

Вы должны добавить параметр -Force в Rename-Item, чтобы он перезаписывал существующие файлы.

Если ваш код генерирует несколько одинаковых имен файлов, вы можете добавить счетчик к имени файла.

Другие вопросы по тегам