powershell rename-item替换为变量递增

时间:2016-09-04 22:52:33

标签: powershell variables replace rename-item-cmdlet

我试图使用Get-Childitem | Where-Object的输出来重命名一组文件,但不是使用常量名称重命名,而是想用一组变量重命名,而我是&m; m使用运算符-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运算符

进行增量变量的工作

1 个答案:

答案 0 :(得分:1)

  1. 明确指定变量的范围,否则每次重命名脚本块的调用都会丢弃本地副本。

  2. -f运算符的搜索/替换字符串是单独的参数,因此请在每个参数周围使用括号单独格式化(否则PowerShell会尝试将$_.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 )。

  3. $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
    

    或者只使用一个变量:

    Parse error: parse error, expecting `'&'' or `"variable (T_VARIABLE)"' in /Users/chris/Development/project/repo/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 475