Windowsパソコンを使っていて
「今から編集を加えるファイルのバックアップを取りたい。」「このファイルをぶっ壊してしまっても編集前どうであったか後で参考にしたい。」と思うことが私は多々あります。
私はそんなとき、以下のような自分ルールに基づきファイルのコピーを作って対応しているんですが、これが結構面倒です。
- (例)
- 【オリジナルのファイル名】hatena.php
- 【バックアップのファイル名】hatena.php.20110308_201520.bak
- (自分ルールの要件を整理)
- オリジナルのファイル名 + 年月日日_付時刻 + .bak
面倒な理由
- コピーの都度、年月日日_付時刻を手入力するのが面倒
- 手入力だから、ミスタイプでおかしな日付を入れてることがある
簡単にするために
バッチファイルを作ってみました。バッチファイルは初めてなので思わぬ不具合があるかもです。
エクスプローラの [送る] メニューに、このバッチファイルを登録しておくと便利です。
rem ------------------------------------------------------------------------------------------------ rem 概要 : sendTo用 バックアップスクリプト rem 日付 : 2011/03/08 rem 履歴 : なし rem ------------------------------------------------------------------------------------------------ rem ---------------------------------------------- rem batファイル環境設定 rem ---------------------------------------------- @echo off setlocal ENABLEDELAYEDEXPANSION rem ---------------------------------------------- rem バックアップ先のファイル名に日付時刻を付加 rem ---------------------------------------------- set tmpTime=%time: =0% set timestamp=%date:~-10,4%%date:~-5,2%%date:~-2,2%_%tmpTime:~0,2%%tmpTime:~3,2%%tmpTime:~6,2% set sourceFileName= set destinationFileName= rem ---------------------------------------------- rem 引数に渡されたフォルダ・ファイルなどを同ディレクトリにコピー rem ---------------------------------------------- for %%n in (%*) do ( set sourceFileName=%%n set sourceFileName=!sourceFileName:"=! set destinationFileName=!sourceFileName:"=!.%timestamp%.bak rem フォルダのコピー if exist "!sourceFileName!\" (xcopy "!sourceFileName!" "!destinationFileName!" /I /E) rem ファイルのコピー if not exist "!sourceFileName!\" (copy "!sourceFileName!" "!destinationFileName!") )
やっぱり不具合 (2011/03/10追記)
ネットワークドライブにあるフォルダやファイルのコピーが上手くいかないです。考え中ですが、過度な期待はしないで下さいです。