Windowsでファイル名に(1)のついた大量のファイルから、(1)を外すコマンド [電子工作・プログラミング]

もう少し正確には、「DSC_xxxx (1).JPG」のように、数字だけで決まる単純なフォーマット+" (1)"のファイルが『大量』にあるときに、(1)を外すことを、コマンドプロンプトで行う方法です。僕が必要となったシーンは単純で、デジカメで撮像した大量のファイルを誤ってコピーした際、勝手にリネームされたような場合でした。

【方法(例)】コマンドプロンプトで、以下のコマンドを実行する:
 FOR /L %s IN (150, 1, 850) DO move "DSC_0%s (1).JPG" "DSC_0%s.JPG"

Windowsのコマンドプロンプトの「FOR」コマンドの/Lスイッチを利用して、変数%sに150から850まで、1刻みのテキストを代入し、DO以下のコマンドを実行します。ここでは、(1)付きのファイル名から(1)無しのファイル名にmoveしています。いま、ファイル名にスペースを含むので、ファイル名を二重引用符で囲っています。

いま、ファイル名を決め打ちしているので、1つの命名規則のファイルにしか対応していません。色々な命名規則には対応できない一方、ファイル名を解析してリネームする方法と違って、万一コマンドを間違えたりしても、存在しないファイルをリネームしようとするだけなので、被害が起きにくい利点もあります。

今回のファイルの命名規則は「DSC_xxxx.JPG」のように4桁で、1000以下の数に対しては0埋めされるようになっています。ただ、今回対象の数字は150から850と3桁なので、4桁目を0埋めする必要があります。コマンドプロンプトのバッチの奥義には適切に0埋めする技もあると思うのですが、ここでは単純に"0%s" とすることで、"0150"などの4桁の数字を得ています。

DO以降のコマンドは任意なので、例えば"echo" を実行することで、ファイル名の展開に関する事前のテストが可能ですし、他のコマンドでも何か使いでがある場合があるかもしれません。

8月8日9時55分
fartrip



コメント(0)