1

То, что мы хотели бы сделать, это исключить необходимость встраивания в наш пакетный файл ИД_пользователя, пароля пользователя, имени хост-сервера и имен конкретной базы данных при автоматизации резервного копирования с нашего сервера MySQL.

Вот командный файл, который я использую сейчас:

:: 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», в котором будет храниться идентификатор пользователя; Пароль; Имя хост-сервера; и т.п.

Кроме того, если бы мы могли получить список каталогов под заданным путем, который затем зациклился бы в соответствующем количестве раз, это было бы идеально.

1 ответ1

0

Вы могли бы сделать это так ...

Создайте свой список файлов (или файл .properties), содержащий имя пользователя, пароль, имя хоста и имя базы данных в одном файле со значениями каждого из них в первой строке, и каждый из них будет разделяться запятой (то есть <Username>,<Password>,<Hostname>,<DatabaseName>).

Пример содержимого FileList - Первая строка

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>"

Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .