Você pode fazer isso assim ...
Crie sua lista de arquivos (ou arquivo .properties) contendo o username , senha , hostname e databasename no mesmo arquivo com os valores de cada um deles na primeira linha, e cada um separado por uma vírgula (ou seja, <Username>,<Password>,<Hostname>,<DatabaseName>
).
Exemplo de conteúdo da lista de arquivos - Linha 1
MyUserName,MyP@ssw0rd!,MyHostName,MyDatabaseName
Em seguida, use um script em lote usando FOR / F e defina o delimitador como uma vírgula que usa a lista de arquivos correlacionados para em seguida, chame o outro script em lote (backup do MySQL) passando os argumentos de acordo.
Script em lote usando os valores da lista de arquivos e chamando o script de backup do MySQL
FOR /F "TOKENS=1-4 DELIMS=," %%F IN (C:\MyFileList.properties) DO CALL "C:\Path\BatchScript.cmd" %%F %%G %%H %%I
Você precisaria alterar o script de backup do MySQL para manipular os argumentos que são passados pelo script de chamada, como no exemplo abaixo.
Lidar com script em lote passou argumentos
@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
Outro método seria apenas usar o script acima, que lida com os argumentos passados, e depois passar esses argumentos para o nível em que você pode ter esses scripts agendados para passar os valores de acordo.
Por exemplo, seu software de agendamento pode ter a capacidade de transmitir argumentos, então você usaria os exemplos de sintaxe abaixo com esse método e o script alteraria a variável com base no valor do argumento para você passar para o script.
-
"C:\Path\MySQLDBBackup.cmd" <Username> <Password> <Hostname> <DatabaseName>
-
"C:\Path\MySQLDBBackup.cmd" "<Username>" "<Password>" "<Hostname>" "<DatabaseName>"