ちょっとしたバックアップを簡単に

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追記)

ネットワークドライブにあるフォルダやファイルのコピーが上手くいかないです。考え中ですが、過度な期待はしないで下さいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください