.Propertiesファイルを使用して値をバッチファイルに渡す


1

MySQLサーバーからのバックアップを自動化するときに、バッチファイルにUser_ID、ユーザーパスワード、ホストサーバー名、および特定のデータベース名を埋め込む必要をなくすことです。

私が今使用しているバッチファイルは次のとおりです。

:: Properties File for Batch

@echo off

cls

c:

cd\

cd program files\MySQL\MySQL Workbench 6.3 CE

mysqldump -uroot -pRoot_Password -hHost_Server_Name DB_Nbr1 > c:\MySQLBackup\DB_Nbr1_BU_%date:~10,4%%date:~4,2%%date:~7,2%.SQL


mysqldump -uroot -pRoot_Password -hHost_Server_Name DB_Nbr2 > c:\MySQLBackup\DB_Nbr2_BU_%date:~10,4%%date:~4,2%%date:~7,2%.SQL


mysqldump -uroot -pRoot_Password -hHost_Server_Name DB_Nbr3 > c:\MySQLBackup\DB_Nbr3_BU_%date:~10,4%%date:~4,2%%date:~7,2%.SQL


mysqldump -uroot -pRoot_Password -hHost_Server_Name test > c:\MySQLBackup\test_BU_%date:~10,4%%date:~4,2%%date:~7,2%.SQL

私たちがやりたいのは、ユーザーIDを保存する別の「.properties」ファイルを持つことです。パスワード; ホストサーバー名; 等

また、指定されたパスの下にあるディレクトリのリストを取得できれば、適切な回数だけループするので理想的です。

回答:


0

次のようにできます...

同じ1つのファイルにユーザー名パスワードホスト名、およびデータベースを含むファイルリスト(または.propertiesファイル)を作成し、最初の行にそれぞれの値を入れ、それぞれをコンマ(ie <Username>,<Password>,<Hostname>,<DatabaseName>)で区切ります。

FileListコンテンツの例-行1

MyUserName,MyP@ssw0rd!,MyHostName,MyDatabaseName


次に、FOR / Fを使用してバッチスクリプトを作成し、相関ファイルリストを使用するコンマに区切り文字を設定して、それに応じて引数を渡す他の(MySQLバックアップ)バッチスクリプトを呼び出します。

ファイルリスト値を使用してMySQLバックアップスクリプトを呼び出すバッチスクリプト

FOR /F "TOKENS=1-4 DELIMS=," %%F IN (C:\MyFileList.properties) DO CALL "C:\Path\BatchScript.cmd" %%F %%G %%H %%I

次の例のように、呼び出しスクリプトによって渡される引数を処理できるように、MySQLバックアップスクリプトを変更する必要があります。

渡された引数を処理するバッチスクリプト

@ECHO OFF

CLS

SET User=%1
SET Pass=%2
SET Host=%3
SET DBName=%4

CD /D "C:\program files\MySQL\MySQL Workbench 6.3 CE"

mysqldump -u%User% -p%Pass% -h%Host% %DBName% > C:\MySQLBackup\%DBName%_BU_%date:~10,4%%date:~4,2%%date:~7,2%.SQL

GOTO EOF

別の方法は、渡された引数を処理する上記のスクリプトを使用し、それらの引数を適切に値を渡すようにスケジュールされているレベルで引数を渡すだけです。

たとえば、スケジューリングソフトウェアに引数を渡す機能がある場合、このメソッドで以下の構文例を使用すると、スクリプトは引数値に基づいて変数を変更し、スクリプトに渡します。

  1. "C:\Path\MySQLDBBackup.cmd" <Username> <Password> <Hostname> <DatabaseName>
  2. "C:\Path\MySQLDBBackup.cmd" "<Username>" "<Password>" "<Hostname>" "<DatabaseName>"

さらなるリソース

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.