使用 .Properties 文件将值传递给批处理文件

使用 .Properties 文件将值传递给批处理文件

我们想要做的是,在从我们的 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

我们想要做的是有一个单独的“ .properties”文件来存储用户ID;密码;主机服务器名称;等等。

此外,如果我们可以获取给定路径下的目录列表,然后循环适当的次数,那就太理想了。

答案1

你可以这样做...

创建包含以下内容的文件列表(或 .properties 文件)用户名密码主机名数据库名称在同一个文件中,每个值都位于第一行,并且每个值用逗号分隔(即<Username>,<Password>,<Hostname>,<DatabaseName>)。

FileList 内容示例 - 第一行

MyUserName,MyP@ssw0rd!,MyHostName,MyDatabaseName


然后使用批处理脚本为/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>"

更多资源

相关内容