PowerShell - Renomear-Item: Não é possível converter 'System.Object []' no tipo 'System.String' exigido pelo parâmetro 'NewName'

1

Estou tentando renomear em massa vários arquivos com o PowerShell, no entanto, me deparo com um erro com o qual não sei o que fazer e a pesquisa também não me deu nenhuma solução.

Mensagem de erro:

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

Por exemplo: 2068227794 (0x8f860be3).bnk to 0x8f860be3_0001.bnk

Neste caso, $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)

}
    
por FatalBulletHit 22.03.2018 / 17:21

1 resposta

1

Como essa pergunta foi respondida nos comentários, responderei a minha própria pergunta para que ela seja marcada como resolvida.

O erro ocorre porque $hex_name é uma matriz que contém a cadeia hexadecimal e o restante. Existem duas soluções simples:

Selecionando o item diretamente:

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

Atribuindo o descanso indesejado a uma nova variável:

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

Todo o crédito vai para EBGreen .

    
por 22.03.2018 / 19:11

Tags