みなさんはネットワークフォルダ等を使って、単純なファイル管理をしているものってありませんか?
(イマドキを考えるとあまりよくないのかもしれませんが)
ファイル管理ソフトを使わないで、ファイルのバックアップって……
地味に面倒じゃないですか?
そんなとき、1発叩くだけで
- 作業ファイルを更新する
- 格納先ファイルをバックアップ
- 格納先へコピー
という作業をしてくれるバッチを作りました!
なにしてくれるの?
バックアップのアップロード先と、対象のファイル名をセットすることで、
- 対象のファイルをアップロード先にコピー
- アップロード先に既にファイルがある場合、バックアップフォルダにコピー
- バックアップフォルダのファイルは、先頭に日時を追加
という処理をしてくれます。
バッチを叩くたびに、日付付きでファイルをどんどんバックアップしてく感じです。
コード
本体
REM - Settings -------------------- call setDate REM - vvv Customize vvv set upPath=\\169.254.0.100\upload set fileName=資料.docx REM - ^^^^^^^^^^^^^^^^^ set upFile=%upPath%\%fileName% set bak=_bak set prefix=%yy%%mm%%dd%%hh%%mi%%ss%_ set bakFile=%upPath%\%prefix%%fileName% REM - Backup ---------------------- mkdir %upPath%\%bak% rename %upFile% %prefix%%fileName% move %bakFile% %upPath%\%bak% REM - upload ---------------------- copy %fileName% %upFile%
日付取得用(setDate)
こちらは「setDate.bat」という名前で保存しておいてください。
set date_tmp=%date:/=% set time_tmp=%time: =0% set yyyy=%date_tmp:~0,4% set mm=%date_tmp:~4,2% set dd=%date_tmp:~6,2% set hh=%time_tmp:~0,2% set mi=%time_tmp:~3,2% set time_tmp= set date_tmp=
使い方
この2つを編集すればOK
- upPath
- fileName
ちなみに複数ファイルのことは、今は考えてないません(考えろよ)。
処理の説明
ざっくりと処理の説明を。
初期設定
ここでパスの設定を行います。
REM - Settings -------------------- call setDate REM - vvv Customize vvv set upPath=\\169.254.0.100\upload set fileName=資料.docx REM - ^^^^^^^^^^^^^^^^^ set upFile=%upPath%\%fileName% set bak=_bak set prefix=%yy%%mm%%dd%%hh%%mi%%ss%_ set bakFile=%upPath%\%prefix%%fileName%
前述のとおり、
- upPath
- fileName
を編集すればOK。
call setDate
で、日付を設定するバッチをコールしています。
バックアップ
ここでバックアップを行っています。
REM - Backup ---------------------- mkdir %upPath%\%bak% rename %upFile% %prefix%%fileName% move %bakFile% %upPath%\%bak%
具体的には
- バックアップ用フォルダの作成
- 既にアップロードしたファイルがある場合、リネーム(先頭に日付付与)
- リネームしたファイルをバックアップフォルダに移動
アップロード
バックアップするファイルを、アップロード先にコピーします。
REM - upload ---------------------- copy %fileName% %upFile%
使っている構文
コマンド | 意味合い |
---|---|
REM | コメント |
call | 他のバッチを実行 |
set | 環境変数に値をセット |
mkdir | フォルダを作る |
rename | リネーム(名前の変更) |
move | 移動 |
copy | コピー |
あとがき
ファイル管理ソフト使えよ
って声が聞こえてくる気がしますが、こういう管理が必要な状況でらくちんするためのものということで……
そのうち複数ファイルに対応したいなぁと思っています。