无法在Windows命令提示符下使用命令
问题描述:
我试图完成的是将每个数据库转储到单个.sql文件中。每当我运行我的代码时,根据我首先放置哪一个,我会得到'while'和'do'命令的错误。我从那个'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命令时出错?我如何解决这个错误?
由于
答
管|
和输出重定向>
由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
管'|'和输出重定向'>'由cmd.exe的解释,第一,不是看脚本的端口。尝试用脱字符'^ |'和'^>'来逃避它们。 – LotPings
你也似乎有一些奇怪的双引号。 – Compo
@LotPings解决了我收到的错误。如果您创建答案,我会将其标记为正确。 作为解决这个问题的结果,我确实有一个问题。我是否正确使用变量?我的文件以$ dbname_6am_mon.sql的形式出现,而不是实际数据库的名称。 –