2017-08-02 79 views
1

我需要以下重命名脚本的一些帮助。我试图通过在末尾添加RAW与递增的数字使用连续数字后缀对Powershell进行重命名

原始文件名的文件如下命名:重命名后

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 
+3

请包括您面临的问题,遇到的任何错误消息和实际的_question_的描述! –

+1

请允许我为新来者提供标准建议:如果答案解决了您的问题,请点击旁边的大号复选标记(✓)并选择性地对其进行投票表决(增加投票需要15个或更多声誉点)。 如果您发现其他答案有帮助,请对它们进行投票。接受(为此你将获得2点声望点)和投票帮助未来的读者。请参阅[相关帮助中心文章](http://stackoverflow.com/help/someone-answers)。如果您的问题尚未得到充分解答,请提供反馈或[自我回复](http://stackoverflow.com/help/self-answer)。 – mklement0

回答

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到全球范围。如果您想随机化订单,您可以在ForEach-Object之前管Get-ChildItemSort-Object {Get-Random}之前。

如果您在Windows上运行PowerShell,SET resexe=0可能没有做你想做的事情。这设置变量${resexe=0} = $null。如果你想使用Set(这是Set-Variable的别名),你可能会想使用set resexe 0。但是$resexe = 0要简洁得多。

+0

非常感谢BenH的帮助。这些文件正在被正确地重命名。但我有问题来增加序列。它被重命名为.101所有文件。我们如何解决这个问题? –

+0

@TusvinIyadoo这就是我只能在一个文件的数组上测试的结果。我更新了答案,将增量分成另一个声明。 – BenH

+0

完美BenH。有用。非常感谢你的帮助。 –