我想要完成的是将我拥有的每个数据库转储到单独的.sql文件中。每当我运行我的代码时,我都会收到与“'”相关的错误。并且'做'命令取决于我先放哪一个。我以后的例子就是' while'是第一个'做'是第一个。我已经尝试了两者,两者都导致“未被识别为内部或外部命令。”
我在我的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
但是,我一直收到以下错误:'而#39;不被识别为内部或外部命令,可操作程序或批处理文件。
为什么我使用while和do命令会出错?如何解决此错误?
由于
答案 0 :(得分: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