Batchdatei leerzeichen senden?
Hallo zusammen,
ich erstelle gerade eine Batch Datei, welche auf MySQL im Localhost verbinden soll.
cd C:\xampp\mysql\bin
mysql -u root -p -h 127.0.0.1
ws.SendKeys "{ENTER}"
show databases;
Wenn ich das Script ausführe, bleibt es beim Passwort stehen, dort muss ich eigentlich nur einmal die Enter Taste drücken, da ich kein Passwort gesetzt habe.
Wie lautet der Befehl in einer Batch Datei, um einmal die Enter Taste zu drücken?
2 Antworten
Lege diese Informationen in einem Config-File ab (~/.my.cnf) und verweise im Batch darauf.
Du scheinst nicht wirklich zu wissen was Du da tust.
Normalerweise fragt mysql nach dem password, wenn Du in der Kommandozeile aufforderst dies zu tun indem Du kein Passwort übergibst, jedoch den "--passwort"-Parameter setzt.
Der --passwort-parameter dient der Übergabe eines Passworts in einer Batch
mysql -u root --password="P@sswort" dbname
ist es leer dan übergib einen leerstring:
mysql -u root --password="" dbname
...oder lass einfach den pasword-parameter weg:
mysql -u root dbname
Du kannst auch den input auf eine extererne Datei umleiten:
mysql -127.0.0.1 <"externeEingabedatei.txt"
da steht alles drin, was Du sonst von Hand eingeben würdest:
externeEingabedatei.txt
-p
P@asswort
USE databasename
SELCT * FROM table;
...blah und blubb
EXIT
Dass, was Du mit sendkeys versucht hast klappt ohnehin nicht.
ws.SendKeys "{ENTER}" ist ein VBScript befehl, den man innerhalb eines VBScripts ausführen kann, jedoch nicht direkt innerhalb einer Batch.
nur mal Infohalber ein Sendkeys script in einer Batch:
@echo off
rem zur Demo:
rem erzeuge eine leere Textdatei
(call)>"meine Datei.txt"
rem öffne Diese im Notepad
start "" notepad "meine Datei.txt"
rem Title des Zielfensters
set "WindowNameToActivate=meine Datei.txt - Editor"
rem kleines JScript, welches in der Kommandozeile übergebene Zeichenfolgen an ein Fenster mit der zuvor festgelegten Überschrift sendet...
echo WScript.Sleep(10);var t='';for (var i = 0; i ^< WScript.Arguments.Length;i++){t=t+WScript.Arguments(i)} ;WshShell=new ActiveXObject("WScript.shell");WshShell.AppActivate('%WindowNameToActivate%');WshShell.Sendkeys(t) >"%temp%\sendkey.js"
rem makro erzeugen (eleichtert den Aufruf)
set "sendKeys=cscript /nologo "%temp%\sendkey.js" "
rem etwas Zeit zum öffnen geben
timeout 1 >nul
%sendKeys% "1|0|c|d|efghijklmnopqrstuvwxyz" {Enter} "blu mup" {Enter} mmahhhh murks
rem weiterschreiben
%sendKeys% {Enter} "Weiter geht's"{Enter}
rem mal ein paar Zeiln füllen damit wir etwas "Fleisch" zum Scrollen bekommen
for /l %%a in (1,1,100) do %sendKeys% "%%a Mississippi" {Enter}
rem 2 sekunden Luft holen...
timeout 2 >nul
%sendKeys% " " "...das war ein Space Weiter geht's"{Enter}
rem lass uns 5 mal Deine PGUP-Taste senden
for /l %%a in (1,1,5) do %sendKeys% {PGUP}
rem und etwas schreiben
%sendKeys% " Hallo ich habe automatisch gescrolt"{Enter}
%sendKeys% " " "...das war ein Space Weiter geht's"{Enter}
rem Speichern? ( achtung in Batch müüsen %-Zeichen ,die als Textzeichen verwendet werden sollen, verdoppelt werden)
%sendKeys% %%{F4}
echo alles gesendet....
pause
Du siehst es ist garnicht so billig mit Batch ohne externe Programme eine Taste zu senden
...und wehe das Zielfenster verliert warum auch immer den fokus, dann gehen die Tastendrücke sonstwohin
wie würde das konkret aussehen?