フォルダを任意のタイミングでバックアップするバッチファイル

後輩が、ウェブサイトコーディング中に、トラブルがあってバックアップしたファイルで巻き戻したとき、別のコードが消えているという2次被害を何度か起こしていた。気づいたことを本人に聞いたところ、「想定したよりバックアップの機会が少なかったから、起きた気がする。」とあった。そのため、バックアップ自体を簡単にしてみることにした。圧縮には7zip を使うので、事前にインストールすること。

参照

cmdのbatを使ってフォルダをCOPYして7zipで圧縮し最後に削除する方法 これくらいブログ
http://korekurai.com/itrelated/cmd-bat-7zip-folder.html

注意

手元の環境で実装するなら、まず空のフォルダで試すこと。安全に失敗するのが推奨される。

構造

バックアップ元

バックアップ先

backup_myfolder.bat

内訳

  1. DATENAME に年月日と時間の値を設定
  2. SOURCEPATH にバックアップ元のパスを設定
  3. TARGETZIP で圧縮ファイル名に年月日と時間を加える
  4. TARGETPATH にバックアップ先のパスを設定
  5. TARGETDIR にバックアップするフォルダ名を設定
  6. XCOPY でフォルダをコピー
  7. 7ZIP でコピーしたフォルダを圧縮
  8. rmdir で圧縮元フォルダを削除
  9. 最後に、バックアップの動作が行われたかを3秒だけ表示する

まとめ

動作テストして、問題がなければ対象フォルダの中身を入れよう。
作成したバッチファイルをランチャーに入れれば、任意のタイミングでバックアップできる。Windows のタスクに設定すれば、起動時や休憩時間にバックアップを自動でバックアップできるようになる。
コーディングが終われば、バッチファイルを解除しよう。

フォルダ内の特定のファイル名を削除する

画像ファイルを自動処理にかけて、一度に加工する場合がある。ファイル名の重複を避けるために、”{元のファイル名}-min.jpg”のように、ファイル名に文字列が追加されることがある。

この追加された文字列を、今まではFlexible Renamer を使って元のファイル名に戻していたが、アプリを立ち上げるのもつらくなったのでバッチファイルを利用するようにした。

前提

workarea 画像の一時展開場所。ウェブサービスを利用して、ファイルをダウンロードする場所にもなっている

手順

    1. \workarea フォルダに、処理するファイルを用意する。
      photo1-min.jpg
      photo2-min.jpg
    2. 処理するファイルと同じフォルダ内に、”del_file_name__min.bat” というバッチファイルを作成し、次のように記載する。

      バッチファイル内の”%fname:-min=%” が置換処理になっている。
      “%fname:{置換前の文字列}={置換後の文字列}%”
    3. 作成したバッチファイルを実行する。
      正しく実行されれば、同フォルダの対象ファイルは、次のようになっている。
      photo1.jpg
      photo2.jpg
    4. 作成したバッチファイルを、ランチャーに登録しておく。

ランチャーに登録しておけば、処理のたびにこのバッチファイルを実行するだけで済む。

参考:ファイル名をリネームする【Windows】