2017-08-02 3 views
1

以下の名前を変更するスクリプトでいくつかの助けが必要です。改名後Powershell連続した数字の接尾辞を使用した名前の変更

AFC17073199C 
AFC17080199C 
AFC17080299C 

ファイルは次のようになります:使用

AFC17073199CRAW.101 
AFC17080199CRAW.102 
AFC17080299CRAW.103 

スクリプト私が最後にRAWを追加したり、インクリメント番号

オリジナルのファイル名で以下のファイル名を変更しようとしています:

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

あなたが直面している問題の説明、遭遇したエラーメッセージ、実際の質問などを含めてください! –

+1

新人に標準的な助言を与えることができます:答えがあなたの問題を解決した場合は、その横にある大きなチェックマーク(✓)をクリックして受諾し、オプションとして上向きに投票してください(上向き投票は15以上の評判ポイント)。 他の回答が参考になった場合は、投票してください。受け入れ(あなたは2つの評判ポイントを獲得します)、up-voteは将来の読者を助けます。関連するヘルプセンターの記事(http://stackoverflow.com/help/someone-answers)を参照してください。あなたの質問にまだ完全に答えられていない場合は、フィードバックや[自己回答](http://stackoverflow.com/help/self-answer)を提供してください。 – mklement0

答えて

1

私はあなたの問題は、ファイルをループする必要があると考えています。 ForEachまたはForEach-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にパイプする前にをSort-Object {Get-Random}に送ることができます。

WindowsでPowerShellを実行している場合、おそらくSET resexe=0は実行していない可能性があります。これにより、変数${resexe=0} = $nullが設定されます。 (別名Set-Variable)を使用する場合は、おそらくset resexe 0を使用します。しかし、$resexe = 0ははるかに簡潔です。

+0

BenHの助けをありがとう。ファイルの名前が正しく変更されています。しかし、私はシーケンスを増加させる問題があります。すべてのファイルで.101という名前に変更されています。どうすればこの問題を解決できますか? –

+0

@TusvinIyadooこれは、1つのファイルの配列だけをテストするためのものです。増分を別の文に分けるために私の答えを更新しました。 – BenH

+0

完璧なBenH。できます。あなたの助けに感謝します。 –

関連する問題