1.概要
ファイルをバックアップするバッチファイル
ファイル名の後ろに日付時刻(秒まで)のタイムスタンプが付加される。
※バッチファイルの作成は初なので素人構文です。
2.ソースコード
rem タイムスタンプ付きバックアップ用プログラムです。
::1.バックアップしたいファイルの直下にでのみ動作します。
::2.myFileNameにバックアップしたいファイル名(相対パス)を設定してください。
::コピーの際はファイル名に秒までのタイムスタンプが付加されます。
::3.BuckUpDirにバックアップ先のディレクトリ名を設定してください。
:: (存在しなければ作成されます。"にすると直下にバックアップされます")
::【備忘録】「date」や「time」の変数を使用する。ただし、ファイル名に使えない「/」が入っているため、文字抽出を行う」
:: 環境変数として参照する場合はそれぞれ「%date%」「%time%」
@echo off
::☆☆☆☆このファイル名を変更してください☆☆☆☆☆
set myFileName=test.txt
set BuckUpDir=BuckUp\
::☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
:: batのフォルダをカレントにする
cd /d %~dp0
::今日の日付を取得
set date2=%date%
::date2から数字を抽出。「%date2:~0,4%」はdate2の1文字目以降から4文字を抽出する。
set date3=%date2:~0,4%%date2:~5,2%%date2:~8,2%
::timeから空白文字を0に置換
set time2=%time: =0%
::time2から秒までの数字を抽出
set time3=%time2:~0,2%%time2:~3,2%%time2:~6,2%
echo %time2%
call :GET_FILENAME %myFileName%
call :GET_FILEEXTEND %myFileName%
::タイムスタンプ用の文字列作成
set timestamp=%BuckUpDir%%GET_FILENAME_BUF%_%date3%_%time3%%GET_FILEEXTEND_BUF%
::Xコピーで実行。モードはファイル"F"。
echo F | XCOPY %myFileName% %timestamp%
::pause -> nul
::------------関数-------------------------
::ここから下の関数は実行後、「関数名_BUF」に値を代入する
::メインで実行後、バッファを使用すること
::拡張子を除いたファイル名を取得
:GET_FILENAME
set GET_FILENAME_BUF=%~n1
exit /b 0
::拡張子を取得
:GET_FILEEXTEND
set GET_FILEEXTEND_BUF=%~x1
exit /b 0