Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 使用重命名项cmdlet时出现脚本块错误_Powershell_Powershell 3.0 - Fatal编程技术网

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;
来修复它,正如我之前的评论所示