カウンターを使用してバッチでファイルの名前を変更するにはどうすればよいですか?

カウンターを使用してバッチでファイルの名前を変更するにはどうすればよいですか?

複数のカメラで撮影した 14,000 枚の写真が年と月ごとにファイルに分類されています。ファイル名に写真を撮影した日付を反映させたいです。

たとえば、1998 年 10 月 16 日に撮影されたすべての写真は、 というフォルダーに保存されます1998\10 October\19981016

すべての写真に 19981016_0001 19981016_0002 などの名前を付けます。

変更したいフォルダをリストすることはできますが、実際に変更することはできません。写真はすべて .jpg です。

失敗した場合に備えて、コピーの一時ファイルを作成しました。まず、次のように入力しました。

cd "C:\Documents and Settings\Brooke LastName\Desktop\Temp" 

ファイルを正常に読み込んだ後、このフォーラムで見つけた数式を使用しました。

ls *jpg | Foreach {$i=1} {Rename-Item _ -NewName ("$($.19981016){0:00000000#} .jpg" -f $i++) -whatif}

私が受け取ったエラーは

Unexpected token ' .19981016' in expression or statement.

At line:1 char:12 + $.19981016 <<<<

エラーが何度も繰り返される

ウェブ上でいくつかの数式を見つけましたが、ほとんどは括弧付きの番号のファイルを作成しました。たとえば、vacation (1).jpg 日付の末尾にアンダースコアを付けて、4 桁のカウンターを表示したいです。例: 19981016_0001

答え1

数式を変更し、少なくとも 2 つの間違いを犯したと思います。

  • Rename-Item $_-> そうでない場合、PowerShell は "_" という名前のファイルの名前を変更しようとします。
  • "$($_.Directory.Name)_{0:D9}.jpg" -f $i++- 現在のオブジェクトのディレクトリ名を取得する必要があります。フォーマットするには、D# 形式を使用する方が簡単で、最終的に取得する桁数を数えるのが簡単です...

関連情報