D&Dされたファイルにタイムスタンプを付けてバックアップするBATファイル
これは、コマンドプロンプト(cmd.exe) Advent Calendar 2015 - Qiitaの22日目の記事です。
※Windows 10 Home 64bit 搭載のcmd.exeにて検証を行っています。
ちょっとしたバックアップ取得用にBATファイルを使っています。
まずはソース
Archive_FLAT.bat
@echo off REM 場所 set ARC_PATH=%CD%\●ARCHIVE rem タイムスタンプ set dt=%DATE:/=% set tm=%TIME: =0% set tm=%tm::=% set tm=%tm:~0,6% set TIMESTAMP=%dt%%tm% rem 結局、ファイルを移動するのかコピーするのか? set COMMAND=%~1 SHIFT IF NOT EXIST "%ARC_PATH%" MKDIR "%ARC_PATH%" IF "%~1"=="" ( explorer "%ARC_PATH%" goto :eof ) REM コピー処理 REM ループする。 :COPY_LOOP rem ファイル名 set FILE_NAME=%TIMESTAMP%_%~nx1% REM 確定フルパス set TARGET=%ARC_PATH%\%FILE_NAME% %COMMAND% "%~1" "%TARGET%" shift if not "%~1"=="" goto :COPY_LOOP goto :EOF
もしくは
Archive_DIR.bat
@echo off REM 場所 set ARC_PATH=%CD%\●ARCHIVE\%DATE:/=% rem タイムスタンプ set dt=%DATE:/=% set tm=%TIME: =0% set tm=%tm::=% set tm=%tm:~0,6% set TIMESTAMP=%dt%%tm% rem 結局、ファイルを移動するのかコピーするのか? set COMMAND=%~1 SHIFT IF NOT EXIST "%ARC_PATH%" MKDIR "%ARC_PATH%" IF "%~1"=="" ( explorer "%ARC_PATH%" goto :eof ) REM コピー処理 REM ループする。 :COPY_LOOP rem ファイル名 set FILE_NAME=%TIMESTAMP%_%~nx1% REM 確定フルパス set TARGET=%ARC_PATH%\%FILE_NAME% %COMMAND% "%~1" "%TARGET%" shift if not "%~1"=="" goto :COPY_LOOP goto :EOF
ざっくりした機能
いずれも、D&Dされたファイルの先頭にタイムスタンプ文字列を付与して、バックアップフォルダ「●ARCHIVE」へ移動orコピーします。
「Archive_FLAT.bat」はそのまま、「Archive_DIR.bat」は今日の日付でサブディレクトリを作成しその中へバックアップされます。
使い方
どちらも、使いたい場所にショートカットを作成して使用します。
- 「リンク先」の第一引数に、「MOVE」もしくは「COPY」を追記します。
- 「MOVE」の場合は移動、「COPY」の場合はコピーされます。
- 「作業フォルダー」に、バックアップフォルダを作成する場所を指定します。空白にすると、ショートカットの置いてある場所になります。
こんな感じで。