PowerShell - Rename-Item:无法将“System.Object[]”转换为参数“NewName”所需的类型“System.String”

PowerShell - Rename-Item:无法将“System.Object[]”转换为参数“NewName”所需的类型“System.String”

我正在尝试使用 PowerShell 批量重命名一堆文件,但是,我遇到了一个错误,我不知道该怎么办,而且搜索它也没有给我任何解决方案。

错误信息:

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


例如2068227794 (0x8f860be3).bnk0x8f860be3_0001.bnk

在这个特殊情况下$hex_name0x8f860be3

$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

由于该问题已在评论中得到回答,因此我将回答我自己的问题,以便将其标记为已解决。

错误发生时,$hex_name数组包含十六进制字符串和其余部分。有 2 个简单的解决方案:

直接选择项目:

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

将不需要的其余部分分配给新变量:

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

所有功劳归于EBGreen

相关内容