Powershell使用顺序数字后缀重命名

时间:2017-08-02 15:07:20

标签: shell powershell scripting

我需要以下重命名脚本的帮助。我试图通过在末尾添加RAW并使用递增数字重命名以下文件

原始文件名:

AFC17073199C
AFC17080199C
AFC17080299C

重命名后的文件应为:

AFC17073199CRAW.101
AFC17080199CRAW.102
AFC17080299CRAW.103

使用的脚本:

cd D:/TempKIG/F.kig_TEMP/E.kig_FILES/F.kig_0829460180

ls

$files = Get-ChildItem -File -Filter '*99C'
$global:i = 0; Get-Random $files -Count $files.Count | 
 Rename-Item -NewName { "$files"+'RAW.{0:100}' -f ++$global:i}

SET resexe=0

1 个答案:

答案 0 :(得分:1)

我相信你的问题是你需要遍历文件。使用ForEachForEach-Object。然后,您可以将要重命名的单个文件通过管道传输到Rename-Item

$i = 1
Get-ChildItem D:/TempKIG/F.kig_TEMP/E.kig_FILES/F.kig_0829460180 -File -Filter '*99C' |
    ForEach-Object {
        $_ | Rename-Item -NewName { "$($_.basename)RAW.{0:100}" -f $i}
        $i++
    }

也不需要将$i放入全局范围。如果您想要随机化订单,可以在Get-ChildItem输入之前将Sort-Object {Get-Random}传送到ForEach-Object

如果您在Windows上运行PowerShell,SET resexe=0可能没有按照您的意愿执行操作。这会设置变量${resexe=0} = $null。如果您想使用SetSet-Variable的别名),您可能希望使用set resexe 0。但是$resexe = 0更加简洁。