2017-08-02 13 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。有用。非常感謝你的幫助。 –

相關問題