![Powershell 使用计数器重命名文件夹中的所有文件](https://linux22.com/image/1613296/Powershell%20%E4%BD%BF%E7%94%A8%E8%AE%A1%E6%95%B0%E5%99%A8%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6.png)
我正在编写一个脚本,该脚本将文件夹中的所有文件重命名为给定名称(参数),并增加计数器。我希望计数器打印 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 重命名文件的一部分并添加自动增量,我的脚本中缺少哪些内容会导致我的数字增加?
$i = 1
Dir xyz* |
Rename-Item –NewName {$_.name –replace "0101",("01{0:D2}" -f $script:i++)}
# 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
以便在脚本块的范围内增加。