2017-01-09 14 views
0

Was ich versuche zu erreichen, ist das Dumping jeder der Datenbanken, die ich habe, in einzelne .SQL-Dateien. Immer, wenn ich meinen Code ausführe, erhalte ich einen Fehler in Bezug auf die Befehle "while" und "do", je nachdem, welchen ich zuerst gesetzt habe. Ich habe seit Beispielen, wo die "Weile" zuerst ist und wo das "ist" zuerst ist. Ich habe beides versucht und beide führen dazu, dass 'nicht als interner oder externer Befehl erkannt wird.Kann nicht verwendet werden, während Befehl in der Windows-Eingabeaufforderung

ich folgend in meiner cmd Linie

"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 

jedoch mit, halte ich die folgende Fehlermeldung erhalten: ‚while‘ als internen oder externen Befehl nicht erkannt wird, ein geschriebenes Programm oder Batch-Datei.

Warum erhalte ich einen Fehler bei der Verwendung der Befehle while und do? Wie behebe ich diesen Fehler?

Dank

+3

Das Rohr '|' und der Ausgabeumleitung '>' zuerst und kann nicht angezeigt durch cmd.exe interpretiert als Port des Skripts. Versuchen Sie, ihnen mit einem Caret '^ |' und '^>' zu entkommen. – LotPings

+0

Sie scheinen auch einige seltsam platzierte doppelte Anführungszeichen zu haben. – Compo

+0

@LotPings Das löste den Fehler, den ich bekam. Wenn Sie eine Antwort erstellen, markiere ich sie korrekt. Ich habe eine Nebenfrage als Ergebnis der Lösung dieser Frage. Benutze ich die Variablen richtig? Meine Datei kommt als $ dbname_6am_mon.sql anstelle des Namens der eigentlichen Datenbank heraus. –

Antwort

0

Das Rohr | und der Ausgangsumleitungs > werden durch cmd.exe interpretiert erste und nicht als Teil des Skripts angesehen. Versuche ihnen mit einem Caret zu entkommen^| und ^>

Nicht viel über mysql Skriptverarbeitung wissen das Zitat des Umleitungsdateinamens kann der Grund sein, dass $ dbname nicht aufgelöst wird.

konnte Eine Abhilfe das Skript in einer Datei zu setzen und aus dem Batch aufrufen

@Echo off 
Pushd "C:\Program Files\MySQL\MySQL Server 5.7\bin\" 
mysql -u[user] -p[password] -e "Source X:\Path\Script.sql" 
Popd 
Verwandte Themen