くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

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」は今日の日付でサブディレクトリを作成しその中へバックアップされます。

使い方

どちらも、使いたい場所にショートカットを作成して使用します。
f:id:kunst1080:20151222102344p:plain

  • 「リンク先」の第一引数に、「MOVE」もしくは「COPY」を追記します。
    • 「MOVE」の場合は移動、「COPY」の場合はコピーされます。
  • 「作業フォルダー」に、バックアップフォルダを作成する場所を指定します。空白にすると、ショートカットの置いてある場所になります。


こんな感じで。