gpt4 book ai didi

powershell - Powershell重命名项替换为变量递增

转载 作者:行者123 更新时间:2023-12-02 23:41:58 25 4
gpt4 key购买 nike

我正在尝试使用Get-Childitem | Where-Object的输出来重命名一组文件,但不是使用常量名进行重命名,而是要使用一组变量来重命名,并且使用运算符-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运算符使增量变量起作用

最佳答案

  • 明确指定变量的范围,否则在每次重命名脚本块调用时都会丢弃本地副本。
  • -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

    关于powershell - Powershell重命名项替换为变量递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39322158/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com