Powershell 使用重命名项cmdlet时出现脚本块错误
在执行以下代码时:Powershell 使用重命名项cmdlet时出现脚本块错误,powershell,powershell-3.0,Powershell,Powershell 3.0,在执行以下代码时: $n = 1 $array = "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9" ls *.pdf | sort lastwritetime | foreach-object { if ($_.name.substring(0,2) -cnot
$n = 1
$array = "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"
ls *.pdf | sort lastwritetime | foreach-object {
if ($_.name.substring(0,2) -cnotin $array) {
ren -newname { "L$global:n " + $_.name -f $global:n++ }
} else {
$global:n++
}}
$n = 0
我遇到以下错误:
重命名项:无法计算参数“NewName”,因为其参数为
指定为脚本块,并且没有输入。脚本块
没有输入就无法计算。第3行字符:14
- ren-newname{“L$global:n”+$\uName-f$global:n++}
-
- CategoryInfo:MetadataError:(:)[Rename Item],ParameterBindingException
- FullyQualifiedErrorId:ScriptBlockArgumentNoInput,Microsoft.PowerShell.Commands.RenameItemCommand
ren-newname{…}
)没有任何管道输入,因为您从未对其进行任何管道输入
改为:
$n = 1
$array = "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"
ls *.pdf | sort lastwritetime | foreach-object {
if ($_.name.substring(0,2) -cnotin $array) {
$_ |ren -newname { "L{0}{1} " -f $global:n++,$_.name }
} else {
$global:n++
}
}
$n = 0
通过将现有项($\uU
)从父管道中管道化,我们知道在嵌套管道中提供了要绑定到$\uUcode>的ren
/重命名项
请注意,如果目标目录包含9个以上的文件,您的脚本可能会开始出现一些潜在的意外行为(尽管您没有明确说明要实现的目标,所以这可能是您想要的)
管道具有当前目录中的文件名,但仍然表示未接收任何输入
封闭管道有,但嵌套管道(ren-newname{…}
)没有任何管道输入,因为您从未对其进行任何管道输入
改为:
$n = 1
$array = "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"
ls *.pdf | sort lastwritetime | foreach-object {
if ($_.name.substring(0,2) -cnotin $array) {
$_ |ren -newname { "L{0}{1} " -f $global:n++,$_.name }
} else {
$global:n++
}
}
$n = 0
通过将现有项($\uU
)从父管道中管道化,我们知道在嵌套管道中提供了要绑定到$\uUcode>的ren
/重命名项
请注意,如果目标目录包含9个以上的文件,那么脚本可能会开始出现一些潜在的意外行为(尽管您没有明确说明要实现什么,所以这可能就是您想要的)正如错误所述,您没有将任何输入传送到ren
$\u124; ren-newname{…}
难道“L$global:n”+$\uname-f$global:n++”不是一个输入吗?如何修复?您使用的阵列只有9项。如果Get ChildItem
(ls
)找到更多文件怎么办?如果$n
达到10,它也将匹配L1
…它不是管道输入。通过在ren
之前添加$\u124;
来修复它,正如我之前的评论中所示,正如错误所述,您没有向ren
发送任何输入$\u124; ren-newname{…}
难道“L$global:n”+$\uname-f$global:n++”不是一个输入吗?如何修复?您使用的阵列只有9项。如果Get ChildItem
(ls
)找到更多文件怎么办?如果$n
达到10,它也将匹配L1
…它不是管道输入。通过在ren
之前添加$\u124;
来修复它,正如我之前的评论所示