2016-05-18 7 views
2

次のスクリプトを使用して、ディレクトリ内のファイルの名前を変更しています。それは、BX1、BX2 ... BXnとしてファイルの名前を変更するために働く。しかし、この新しい名前を既存のファイル名の前に付けることをお勧めします。言い換えればpowershellを使用して連続した番号の接頭辞をファイル名に追加するにはどうすればよいですか?

$i = 1; dir *.txt | %{Rename-Item $_ -NewName ('BX{0:D4}.txt' -f $i++)} 

私は

  • Apple.txt
  • Dog.txt
  • Zebra.txtが

を表示させたい

  1. BX001 Aなどpple.txt
  2. BX002 Dog.txt
  3. BX003 Zebra.tx

私は'BX{0:D4}.txt'+ $_.Nameまたは'BX{0:D4}.txt'+ $_.FullNameまたは'BX{0:D4}.txt'+ $_.Directory.Nameに変更してみましたが、その後、それはパスを表すので、私は、指定されたターゲットの名前を変更することはできませんというメッセージを受け取りますまたはデバイス名。あなたがBaseName財産および他のフォーマットを使用することができます

+0

ああ、あなたは正しいです - ファイル名の前にBXが必要です。編集ありがとう。 –

答えて

4

$i = 1; dir *.txt | %{Rename-Item $_ -NewName ('BX{1:D4} {0}.txt' -f $_.BaseName, $i++)} 

また、あなたはあなたの変数を初期化するためにForEach-Objectコマンドレットの-Beginパラメータを使用することができます。

Get-ChildItem *.txt | 
    ForEach-Object -Begin{ $i = 1; } -Process { 
     Rename-Item $_ -NewName ('BX{1:D4} {0}.txt' -f $_.BaseName, $i++) 
    } 
関連する問題