2017-01-09 222 views
0

我試圖完成的是將每個數據庫轉儲到單個.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命令時出錯?我如何解決這個錯誤?

由於

+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 
相關問題