プログラムを組む際、こまめにバックアップを取るべきなんですが、なんかこう面倒なんですよね。
同じフォルダ内でコピペして「~~ – コピー.txt」みたいなのを作っていってもいいんですが、数が増えるとどれがどれだかわからなくなったり。
かといってバックアップ用フォルダを作ってもフォルダ移動が面倒だったり、結局数が増えてわからなくなったり。
ということで、バックアップ用batを作りました。
いろんなサイトの寄せ集めかつ、もっと汎用的なのも作れると思いますが、個人的に欲しかった機能を実装しただけなのでカスタムは勝手にやってください。
簡単なので慣れてる人はすでにちゃちゃっと作って使ってそうですね。
今回作ったのは自分で叩かないとダメなんで、めっちゃ便利とまではいきませんが、まぁ個人用だからいいよね()
全く知らない~ちょっとわかる辺りの人向けに書いてるので、変に細かかったり逆にざっくりだったり気持ち悪いかもしれません。
気になったら単語とかで検索してね。
batは特に環境を整えなくても作れるので、お試しに触ってみるのもいいかもしれませんね。
ダブルクリックすると実行してしまうので、中身を見たいときはメモ帳とかのテキストエディタで開いてください。
テキストエディタの機能で開くか、ドラッグ&ドロップするか、batを右クリックして編集を選択するかで覗けます。
Mac用はこっち。
- 使い方
バックアップを取りたいファイルと同じフォルダにbkup.batを格納して実行。
実行すると同じフォルダ内にbkupフォルダが作成されます。
その中に日付フォルダがあり、更に時間フォルダがあって対象ファイルが保存されています。
同じ日に何度叩いてもひたすら時間でフォルダ作って保存し続けます。
だいぶ階層が深くなりますが、手動でリヴィジョン管理すると思えばいい感じ?
- フォルダ構成
testフォルダにbatを置いたとします。
test
└ bkup.bat
└ bkup
└ 日付
└ 時間
└ バックアップ
- バックアップ対象ファイルの変更
15行目「copy .txt .\bkup\%today%\%now%」の「.txt」を対象ファイルに変更。
簡単に中身解説。
set today=%date:~0,4%%date:~5,2%%date:~8,2%
dateは日付を取得する関数、yyyy/mm/ddの形で取得します。
/はフォルダ名に使えないので/を取り除くために%date:~0,4(0桁目(最初)から4桁分取る)としています。
set now=%time: =0%
timeは時間を取得する関数、h:nn:ss.zの形で取得します。
ただ時間部分が1桁だと0桁目が半角スペースになってしまうので半角スペースを0に置換するようにしています。
set now=%now:~0,2%%now:~3,2%%now:~6,2%
日付を取得した際と同じ。:はフォルダ名に使えません。
now変数の内容をいじくって同じnow変数に格納し直す。
if not exist .\bkup (
mkdir .\bkup
)
bat実行したフォルダにbkupフォルダがあるか確認します。
なかったら作ります。
if not exist .\bkup\%today% (
mkdir .\bkup\%today%
)
bkupフォルダ内に当日の日付フォルダがあるか確認します。
なかったら作ります。
mkdir .\bkup\%today%\%now%
bkupフォルダ内の日付フォルダ内に現在時刻で時間フォルダを作ります。
copy *.txt .\bkup\%today%\%now%
対象ファイルをなんやかんやして作った時間フォルダにコピーします。
デフォルトはtxtファイルを全部コピーするようにしています。
rem pause
現状batを実行しても一瞬黒い画面が出て消えますが、remを消すと黒い画面が消えなくなります。
何かしらキーを押すと画面が消えます。
コピー対象がa.txtとb.jpgみたいな複数ファイルあるときは+で結合して「a.txt+b.jpg」にするとできるらしいです。
ただワイルドカード(*)を使ってると出来ないようで、自分は大人しくcopyをもう1行増やして対応しました。
間違い等あればガンガン突っ込んでください。
「バックアップするやつ(Win)」への1件のフィードバック