powershell 重命名项目替换为变量递增
powershell rename-item replace with variables incrementing
我正在尝试使用 Get-Childitem | Where-Object
的输出来重命名一组文件,但我想用一组变量重命名,而不是使用常量名称重命名,我正在使用operator -replace
来查找字符串中我想要更改的位置。示例:
nane_01 -> name_23
name_02 -> name_24 they are not with the same final digit
这是我用于测试的代码:
$a = 0
$b = 1
$Na= 2
$Nb= 3
Get-Childitem | Where-Object {$_.name -match "_0[1-9]"} | rename-item -Newname { $_.name -replace "_{0}{1}","_{2}{3}" -f $a++,$b++,$Na++,$Nb++ } -Whatif
我找不到如何使增量变量与 -replace
运算符一起工作
明确指定变量的范围,否则每次调用重命名脚本块时都会丢弃本地副本。
Search/replace -replace
运算符的字符串是单独的参数,因此使用括号将它们分别格式化(否则 PowerShell 将尝试将 -f
应用于 $_.name
).
$script:a = 0
$script:b = 1
$script:Na= 2
$script:Nb= 3
Get-Childitem | Where-Object {$_.name -match "_0[1-9]"} | rename-item -Newname {
$_.name -replace ("_{0}{1}" -f $script:a++,$script:b++),
("_{0}{1}" -f $script:Na++,$script:Nb++)
} -Whatif
或者只使用一个变量:
$script:n = 0
Get-Childitem | Where-Object {$_.name -match "_0[1-9]"} | rename-item -Newname {
$_.name -replace ("_{0}{1}" -f $script:n++,$script:n++),
("_{0}{1}" -f $script:n++,$script:n++)
} -Whatif
我正在尝试使用 Get-Childitem | Where-Object
的输出来重命名一组文件,但我想用一组变量重命名,而不是使用常量名称重命名,我正在使用operator -replace
来查找字符串中我想要更改的位置。示例:
nane_01 -> name_23
name_02 -> name_24 they are not with the same final digit
这是我用于测试的代码:
$a = 0
$b = 1
$Na= 2
$Nb= 3
Get-Childitem | Where-Object {$_.name -match "_0[1-9]"} | rename-item -Newname { $_.name -replace "_{0}{1}","_{2}{3}" -f $a++,$b++,$Na++,$Nb++ } -Whatif
我找不到如何使增量变量与 -replace
运算符一起工作
明确指定变量的范围,否则每次调用重命名脚本块时都会丢弃本地副本。
Search/replace
-replace
运算符的字符串是单独的参数,因此使用括号将它们分别格式化(否则 PowerShell 将尝试将-f
应用于$_.name
).
$script:a = 0
$script:b = 1
$script:Na= 2
$script:Nb= 3
Get-Childitem | Where-Object {$_.name -match "_0[1-9]"} | rename-item -Newname {
$_.name -replace ("_{0}{1}" -f $script:a++,$script:b++),
("_{0}{1}" -f $script:Na++,$script:Nb++)
} -Whatif
或者只使用一个变量:
$script:n = 0
Get-Childitem | Where-Object {$_.name -match "_0[1-9]"} | rename-item -Newname {
$_.name -replace ("_{0}{1}" -f $script:n++,$script:n++),
("_{0}{1}" -f $script:n++,$script:n++)
} -Whatif