Create a gist now

Instantly share code, notes, and snippets.

@hdyk3118 /backup.bat
Last active Dec 16, 2015

Embed
What would you like to do?
ファイルバックアップ・世代管理スクリプト。
REM 開始時間設定
set tmpTime=%time: =0%
set logTime=%date:~0,4%%date:~5,2%%date:~8,2%_%tmpTime:~0,2%%tmpTime:~3,2%%tmpTime:~6,2%
REM 開始ログ出力
echo %logTime% バックアップ処理開始。 >> backup.log
REM ファイルバックアップ
cp %1 backup/%logTime%_%1
REM 上記コマンドエラーの場合、エラーメッセージ出力
if %ERRORLEVEL% neq 0 echo ERROR-001:ファイルバックアップ処理失敗。 >> backup.log
REM バックアップファイル世代管理処理呼び出し(引数:管理ファイル数)
file_generation.vbs %2
REM 上記コマンドエラーの場合、エラーメッセージ出力
if %ERRORLEVEL% neq 0 echo ERROR-002:バックアップファイル世代管理処理失敗。 >> backup.log
REM 終了時間設定
set tmpTime=%time: =0%
set logTime=%date:~0,4%%date:~5,2%%date:~8,2%_%tmpTime:~0,2%%tmpTime:~3,2%%tmpTime:~6,2%
REM 終了ログ出力
echo %logTime% バックアップ処理終了。 >> backup.log
Option Explicit
'変数初期化
Dim fso, shell, exec, str(), cnt, delCnt, param
cnt=0
'パラメータ取得
Set param = WScript.Arguments
'ファイルオブジェクト
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
'シェルオブジェクト
Set shell = CreateObject("WScript.Shell")
'コマンド実行(更新日時昇順のファイル一覧取得)
Set exec = shell.Exec("cmd /c dir /a-d /b /od backup")
'取得結果をループさせ、配列格納
Do While Not exec.StdOut.AtEndOfStream
ReDim Preserve str(cnt)
str(cnt) = exec.StdOut.ReadLine
cnt = cnt + 1
Loop
'削除ファイル数計算
delCnt = cnt - param(0)
'削除ファイル数が1以上の場合、ファイル削除
If delCnt >= 1 Then
For cnt = 0 To delCnt - 1
'エラー処理(次処理)
On Error Resume Next
'ファイル削除処理
fso.DeleteFile "backup\" & str(cnt), False
'エラーの場合、コード「1」を返却
If Err.Number <> 0 Then
WScript.Quit(1)
End If
Next
End If
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment