我正在尝试使用 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
由于该问题已在评论中得到回答,因此我将回答我自己的问题,以便将其标记为已解决。
错误发生时,$hex_name
数组包含十六进制字符串和其余部分。有 2 个简单的解决方案:
直接选择项目:
$hex_name = ($_.BaseName).Split('()')[1]
将不需要的其余部分分配给新变量:
$prefix, $hex_name, $rest = ($_.BaseName).Split('()')
所有功劳归于EBGreen。