2

Я пытаюсь переименовать кучу файлов с помощью PowerShell, однако я сталкиваюсь с ошибкой, с которой не знаю, что делать, и поиск ее тоже не дал мне никаких решений.

Сообщение об ошибке:

Rename-Item : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'NewName'.


Например: 2068227794 (0x8f860be3).bnk до 0x8f860be3_0001.bnk

В этом конкретном случае $hex_name является 0x8f860be3 .

$source = "K:\_test"

Get-ChildItem -Path $source -File -Recurse -Include "* (0x*).*" | ForEach-Object {

   $prefix, $hex_name = ($_.BaseName).Split('()')
   Rename-Item -Path $_ -NewName ($hex_name + "_0001" + $_.Extension)

}

1 ответ1

2

Поскольку на этот вопрос ответили в комментариях, я отвечу на свой вопрос, поэтому он помечен как решенный.

Ошибка возникает, поскольку $hex_name является массивом, который содержит шестнадцатеричную строку и остальные. Есть 2 простых решения:

Выбор предмета напрямую:

$hex_name = ($_.BaseName).Split('()')[1]

Назначение нежелательного отдыха новой переменной:

$prefix, $hex_name, $rest = ($_.BaseName).Split('()')

Все кредиты идут на EBGreen.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .