バッチファイルでファイル名の先頭に一括で日付を入れてみる

 このブログはパソコンの操作方法の説明をすることが多いので、よく画像を使います。ひとつの記事で10~20枚、多いと50枚ぐらいです。キャプチャソフトで画面のスクリーンショットを撮り、1、2、3・・・、と番号を振って管理しています。

2015112215554176_1

サーバーにアップロードする前に、他の記事の画像と区別するために、記事を書いた日の日付を挿れているのですが、毎回手作業でリネームするのは地味にしんどいです。

2015112215554176_2

 このような要望を満たしてくれるフリーソフトとかいっぱいありそうですが、調べたところ Windows のバッチファイルで同じことができそうだったので、挑戦してみることにしました。

準備

テスト環境を用意します。適当な名前のテキストファイルをいくつか用意します。

2015112215554176_3

ファイル名を変更する動作の確認にしか使わないので、内容はどうでもよろしいです。

2015112215554176_4

再度、右クリックメニューから「テキスト ドキュメント」ファイルを作成。

2015112215554176_5

拡張子が「.txt」になっていますが、これを「.bat」に変更。

2015112215554176_6

以降、このバッチファイルをメモ帳などのテキストエディタで編集し、保存した後ダブルクリックで動作が確認できます。

2015112215554176_7

コマンドプロンプトから操作してもよいのですが、この方が簡単かと。

ファイル名の変換

カレントディレクトリにおいて、1番目の引数に対象となるファイル名を指定し、2番目の引数に変更後の新しいファイル名を指定します。

次のように記述しても同じです。

日付の取得

コマンドプロンプトでの確認。

ちなみに、現在の時刻も取得できます。

文字列の置換

取得した日付は「YYYY/MM/DD」の形式になっているので、スラッシュを削除して「YYYYMMDD」にしてからファイル名として利用します。このときスラッシュを一括で削除するには、次のような文字列置換の構文を利用します。

置換後の文字列を空にしておけば、削除したことと同じになります。

時刻でコロン(:)やドット(.)を消去するなら次のようになります。

文字列の結合

ファイル名を一括変換する

カレントフォルダのすべてのテキストファイルに日付を挿入するので、FOR コマンドを使って繰り返し処理を行います。FOR コマンドの構文は次のとおりです。

それでは、今までの基本的な構文を使って、ファイル名の先頭にに日付を挿入するバッチファイルを作成してみます。

先ほど作成したバッチファイルをダブルクリックして動作を確認してください。

日本語やスペースを含んだファイル名にも対応する

 このバッチファイルでだいたい目的は達成できたのですが、このソースコードは日本語や半角スペースが含まれているファイル名を変換してくれません。せっかくなので、対応させておきましょう。こちらの一文を修正するだけです。

%%f をダブルクォーテーションで囲みます。

これで日本語を含むファイル名にも対応できます。

2015112215554176_8

「役に立った」と思ったら、記事のシェアをお願いします。

スポンサーリンク

Comment

  1. 1
    .
    名前:シリウス ID:I2NDU5MjI

    わかりやすく教えて頂きありがとうございます。
    一つ質問させて頂ければと思いましたが、
    時間が9時台と10時台でファイル先頭への挿入が出来ない場合があるのですが
    何か検討がつきそうな部分はございますか?

    時刻に一桁が入っているとうまくいかなくなるのかと思い
    構文を自分で修正できるか考えましたが思いつかず…

    申し訳ございませんがお時間のある時にでも
    見て頂くことは可能でしょうか?

  2. 2
    .
    名前:Naokix ID:M4NjA2NDY

    シリウス様
    当ブログにお越しいただき誠にありがとうございます。

    差し支えなければソースコードを拝見したいのですが、よろしいでしょうか?
    コメント欄にソースコードを貼り付けるとエスケープ処理しなければならないので、
    メールフォームから送信していただけるとありがたいです。
    名前や題名を省略して本文だけで送信できるはずです。

    その際に、フリーメールの捨て垢で結構ですので添えていただけると助かります。

コメント認証制です。反映されるまで時間が掛かる場合があります。
URLの記入はhttpのhを抜いて下さい(宣伝対策です)。
連続でコメントするとスパム扱いになる場合があります。
しばらく待ってからコメントしてください。

CAPTCHA


TOP