Powershell 使用计数器重命名文件夹中的所有文件

Powershell 使用计数器重命名文件夹中的所有文件

我正在编写一个脚本,该脚本将文件夹中的所有文件重命名为给定名称(参数),并增加计数器。我希望计数器打印 3 位数字(001、002 等)。我的代码看起来可以工作,但它告诉我我的所有文件都不存在。我也无法正确找出 3 位数字。任何帮助都非常感谢!

param(
    [string]$NAME,
    [string]$FOLDER
    )

$NAME = "SEATTLE"
$FOLDER = "C:\Users\user00\Documents\Datasheets"
$files = Get-ChildItem -Path $FOLDER -Recurse 
$counter = 001

foreach ($file in $files){
    Rename-Item $file.Name -NewName $NAME
    $counter++
}

答案1

这就是填充的作用。这是很常见的做法,在很多地方都有很好的记录。

只需搜索您的用例,就会返回许多示例。

powershell 数字填充

使用 PowerShell 重命名文件的一部分并添加自动增量,我的脚本中缺少哪些内容会导致我的数字增加?

$i = 1
Dir xyz* | 
Rename-Item –NewName {$_.name –replace "0101",("01{0:D2}" -f $script:i++)}

在 PowerShell 中格式化前导零

# Examples:
"{0:0000}" -f 4

# Results
0004

"{0:0000}" -f 45

# Results
0045

"{0:0000}" -f 456

# Results
0456

"{0:0000}" -f 4567

# Results
4567



1..10 | 
foreach {
    $i="{0:0000}" -f $_
    $dir="c:\test\Target_$i"
    $file="file_$i.txt"
    $target=Join-Path -Path $dir -ChildPath $file
    Write-Host "Updating $target"
}


# Results
<#
Updating c:\test\Target_0001\file_0001.txt
Updating c:\test\Target_0002\file_0002.txt
Updating c:\test\Target_0003\file_0003.txt
Updating c:\test\Target_0004\file_0004.txt
Updating c:\test\Target_0005\file_0005.txt
Updating c:\test\Target_0006\file_0006.txt
Updating c:\test\Target_0007\file_0007.txt
Updating c:\test\Target_0008\file_0008.txt
Updating c:\test\Target_0009\file_0009.txt
Updating c:\test\Target_0010\file_0010.txt
#>

答案2

$NAME = "SEATTLE"
$FOLDER = "C:\Users\user00\Documents\Datasheets"

[ref]$i = 1

GEt-ChildItem -Path $FOLDER -File -Recurse |
   Rename-Item -NewName {'{0}{1:d3}{2}' -f $NAME, $i.value++, $_.Extension}

格式运算符-F)根据基本名称构造新的鬃毛:{0}=$NAME、填充到 3 个位置的计数器:{1:d3}=$i.Value以及要重命名的文件的扩展名:{2}=$_.Extension

$i必须扮演[参考]并被引用为$i.Value以便在脚本块的范围内增加。

相关内容