2017-01-09 6 views
0

То, что я пытаюсь выполнить, - это сброс каждой из баз данных, которые у меня есть, в отдельные .sql-файлы. Всякий раз, когда я запускаю свой код, я получаю сообщение об ошибке в отношении команд «while» и «do», в зависимости от того, какой из них я поставил первым. У меня есть примеры, когда «пока» первый и где «делать» является первым. Я попробовал оба, и оба результата приводят к тому, что «не распознается как внутренняя или внешняя команда.Невозможно использовать команду в командной строке Windows

Я использую следующие в моей CMD линии

"C:\Program Files\MySQL\MySQL Server 5.7\bin\"mysql -u[user] -p[password] -e "show databases" | while read dbname do "C:\Program Files\MySQL\MySQL Server 5.7\bin\"mysqldump -u[user] -p[password] --complete-insert "$dbname" > "D:\Backup\$dbname"_6am_mon.sql; done 

Однако, я получаю следующее сообщение об ошибке: «а» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

Почему я получаю сообщение об ошибке для использования команд while и do? Как устранить эту ошибку?

Благодаря

+3

Труба '|' и перенаправления вывода ''> интерпретируются cmd.exe первого и не рассматриваются как порт сценария. Попытайтесь избежать их с помощью кавычки '^ |' и '^>'. – LotPings

+0

У вас также есть странные двойные кавычки. – Compo

+0

@LotPings Это разрешило ошибку, которую я получал. Если вы создадите ответ, я отметю его правильно. У меня есть побочный вопрос в результате решения этого вопроса. Правильно ли я использую переменные? Мой файл выходит как $ dbname_6am_mon.sql вместо имени фактической базы данных. –

ответ

0

трубы | и выход перенаправления > интерпретируются cmd.exe первый и не рассматривается как часть сценария. Попытайтесь избежать их с помощью каретки^| и ^>

Не зная о работе сценария Mysql, цитирование имени файла перенаправления может быть причиной того, что $ dbname не разрешено.

Обходной могли бы поместить скрипт в файл и вызвать его из партии

@Echo off 
Pushd "C:\Program Files\MySQL\MySQL Server 5.7\bin\" 
mysql -u[user] -p[password] -e "Source X:\Path\Script.sql" 
Popd 
Смежные вопросы