« [OPアンプ] 加算回路、減算回路(差動増幅回路) | トップページ | [PSoC1] 信号経路 »

2013年3月28日 (木)

[WSH] XAMPPのMySQLデータをバックアップするスクリプト

XAMPPのMySQLデータを、WSHスクリプトでバックアップする。

指定したデータベースを mysqldump.exe でダンプし、7z.exeで圧縮して、指定フォルダに YYYY-MM-DD.zip ファイルを作成する。

'mysqldumpコマンドのパス
Const PATH_MYSQLDUMP = """C:\xampp\mysql\bin\mysqldump.exe"""

'ユーザ名、パスワード
Const DB_USER = "root"
Const DB_PASS = "password"

'バックアップファイルを作成するフォルダ
Const PATH_BACKUP_DIR = "C:\mysql_backup"

'圧縮コマンド
'  %ARCHFILE% ... 圧縮ファイル名が入る部分
'  %SRCDIR% ... 圧縮するフォルダ名が入る部分
Const ARCH_COMMAND = """C:\app\7z.exe"" a ""%ARCHFILE%"" ""%SRCDIR%"""

'圧縮ファイルの拡張子
Const ARCH_EXT = ".zip"

'バックアップするデータベース名(セミコロン区切り)
Const BACKUP_DB = "mydb1;mydb2"

'------------------------------

Function dispMess( strMess, intLevel )
	If intLevel <= DISP_MESS_LEVEL Then
		WScript.Echo strMess
	End If
End Function

'------------------------------

Const ML_FATAL = 1
Const ML_ERR = 3
Const ML_WARN = 5
Const ML_INFO = 7
Const ML_TEST = 9
Const ML_ALL = 7

DISP_MESS_LEVEL = ML_ALL

'コマンドライン引数
If WScript.Arguments.Count >= 1 Then
	If IsNumeric( WScript.Arguments.Item(0) ) = True Then
		If WScript.Arguments.Item(0) >= 0 Then
			DISP_MESS_LEVEL = CInt( WScript.Arguments.Item(0) )
		End If
	End If
End If

'メッセージ
Call dispMess( "表示レベル: "& DISP_MESS_LEVEL, ML_TEST )

'------------------------------

On Error Resume Next

'ファイルシステムオブジェクト
Set objFs = CreateObject("Scripting.FileSystemObject")

'日付文字列
strDate = Replace( Cstr( date() ), "/", "-" )

'ダンプ先フォルダ
strDumpDir = PATH_BACKUP_DIR & "\" & strDate

'フォルダあり?
If objFs.FolderExists( strDumpDir ) = True _
 Or objFs.FileExists( strDumpDir & ARCH_EXT ) = True Then
	i = 2
	Do
		strTmp = strDumpDir & "-" & i
		i = i + 1
	Loop While objFs.FolderExists( strTmp ) = True _
	 Or objFs.FileExists( strTmp & ARCH_EXT ) = True

	'確定
	strDumpDir = strTmp
End If

'メッセージ
Call dispMess( "ダンプ先フォルダ: "& strDumpDir, ML_TEST )

'フォルダ作成
Call objFs.CreateFolder( strDumpDir )
If Err.Number <> 0 Then
	Call dispMess( "フォルダ作成に失敗しました。("& strDumpDir &")", ML_FATAL )
	WScript.Quit
End If

'------------------------------
'ダンプ
'------------------------------

'データベース名の配列
arrDbName = Split( BACKUP_DB, ";" )

'シェルオブジェクト
Set objShell = CreateObject("WScript.Shell")

intDumpErrCount = 0

'メッセージ
Call dispMess( vbCrLf &"ダンプを開始します。", ML_INFO )

For i = 0 To UBound( arrDbName )
	'ダンプ先ファイル名
	strDumpFile = strDumpDir &"\"& arrDbName(i) &".sql"
	'メッセージ
	Call dispMess( arrDbName(i), ML_INFO )

	'実行するコマンド
	strCmd = "cmd /c "& PATH_MYSQLDUMP & _
		" -u "& DB_USER &" -p"& DB_PASS &" "& arrDbName(i) & _
		" > "& strDumpFile

	'実行
	intRes = objShell.Run( strCmd, 0, True )

	'結果
	If intRes <> 0 Then
		Call dispMess( "エラー: ダンプ失敗: "& arrDbName(i), ML_ERR )
		intDumpErrCount = intDumpErrCount + 1
	End If
Next

'------------------------------
'圧縮
'------------------------------

'圧縮ファイル名
strArchFile = strDumpDir & ARCH_EXT

'メッセージ
Call dispMess( vbCrLf &"圧縮ファイル名: "& strArchFile, ML_TEST )

'実行するコマンド
strCmd = ARCH_COMMAND
strCmd = Replace( strCmd, "%ARCHFILE%", strArchFile )
strCmd = Replace( strCmd, "%SRCDIR%", strDumpDir )

'実行
intRes = objShell.Run( strCmd, 0, True )

'結果
If intRes <> 0 Then
	Call dispMess( vbCrLf &"エラー: 圧縮に失敗しました。", ML_FATAL )
	WScript.Quit
End If

'------------------------------
'ダンプ削除
'------------------------------

If intDumpErrCount = 0 Then
	Call objFs.DeleteFolder( strDumpDir )
	If Err.Number <> 0 Then
		Call dispMess( vbCrLf &"エラー: ダンプ用フォルダの削除に失敗しました。("& strDumDir &")", ML_ERR )
	End If
Else
	Call dispMess( vbCrLf &"ダンプ用フォルダは削除しませんでした。", ML_INFO )
End If

Call dispMess( vbCrLf & strArchFile &" を作成しました。", ML_INFO )

« [OPアンプ] 加算回路、減算回路(差動増幅回路) | トップページ | [PSoC1] 信号経路 »

2017年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Amazonリンク

ダイビング写真(swf)

ブログ内検索

  • Google
    WWW を検索
    ブログ内を検索

リンク(いつもお世話さま)

  • ソニーストア
     iTunes Store(Japan)
    Just MyShop(ジャストシステム)
    ブックオフオンライン
無料ブログはココログ