Programm starten mit Batch und in dem geöffneten Programm automatische Tastatureingabe mit Befehl?
Hallo Gutefrage Community,
also folgende Frage würde mich brennend interessieren. Ich habe mich in den letzten Tagen mit Batchscripten beschäftigt und bin nun daran Programme mithilfe von Batch automatisch zu starten indem ich sie in den Autostart lege. Ich wüsste wirklich gerne ob man mit einem Befehl in der Batchdatei schaffen kann, dass in dem geöffneten Programm automatisch was eingegeben wird.
als Beispiel:
Nehmen wir mal an ich hab ein Script geschrieben mit dem ich Word starte. Nun möchte ich das die Batchdatei sobald Word gestartet ist in Wort etwas eintippt.
Hoffe auf eure Hilfe
Danke im vorraus
5 Antworten
Im Prinzip ist das schon möglich und jetzt das große ABER:
Mit Word hast du ein sehr gutes Beispiel genannt! Ein User startet Word, weil er damit „schreiben“ will – was und warum auch immer. Weltweit gibt es inzwischen schätzungsweise 7 Mrd. potentielle Anwender, von denen jeder „seinen“ Text schreiben will. „Hello World“ ist zwar ein bekannter Einstieg in die Programmierung, aber ist es auch ein guter Start in die Textverarbeitung?
Bis auf Buchautoren schreibt jeder Wordanwender in über 50 % der Fälle einen neuen Text. Wie soll man da einen Starttext festlegen und wie sollte der lauten?
Wie gesagt, ist dein Gedanke sehr positiv gedacht, nur scheitert er in diesem Fall an der Praxis.
Dein Auto startet ja auch nicht einfach so, nur weil du die Tür öffnest. Manchmal will man ja auch nur was aus dem Auto herausholen!
Sowas in der Art?
@if (@CodeSection == @Batch) @then
@echo off
rem Use %SendKeys% to send keys to the keyboard buffer set SendKeys=CScript //nologo //E:JScript "%~F0"
rem Start the other program in the same Window start "" /B cmd
%SendKeys% "echo off{ENTER}"
set /P "=Wait and send a command: " < NUL ping -n 5 -w 1 127.0.0.1 > NUL %SendKeys% "echo Hello, world!{ENTER}"
set /P "=Wait and send an Up Arrow key: [" < NUL ping -n 5 -w 1 127.0.0.1 > NUL %SendKeys% "{UP}"
set /P "=] Wait and send an Enter key:" < NUL ping -n 5 -w 1 127.0.0.1 > NUL %SendKeys% "{ENTER}"
%SendKeys% "exit{ENTER}"
goto :EOF
@end
Alles viel zu umständlich. 1. Word-Datei erstellen (Dateiname.docx) 2. echo {deintext} > (Dateiname.docx) 3. word Datei öffnen
versuch mal AutoIt ...https://www.autoitscript.com/site/autoit/ .... etwas senden ist denke ich Sendkeys .... und natürlich erstmal die Windowsbefehle um das Fenster zu bestimmen wohin gesendet werden soll
Kann man mit AutoIt auch Bat dateien erstellen?
Oder ist das dann eine andere Dateiendung?
ist die endung AU3 ... oder evt. anders (meine war halt Version 3, vielleicht sind die jetzt weiter).
das ist die konfortabelste script sprache unter für Windows, die ich kenne --- allerdings nicht ganz einfach zu erlenen
etwas einfacher: VBScript ... das geht mit Endung VBS ... ich weiss jetzt nicht ob das VBScript Sendkeys kennt ... mal ausprobieren.
Sorry jetzt mit zeilenumbrüchen an den richtigen Stellen...
@if (@CodeSection == @Batch) @then
@echo off
rem Use %SendKeys% to send keys to the keyboard buffer
set SendKeys=CScript //nologo //E:JScript "%~F0"
rem Start the other program in the same Window
start "" /B cmd
%SendKeys% "echo off{ENTER}"
set /P "=Wait and send a command: " < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "echo Hello, world!{ENTER}"
set /P "=Wait and send an Up Arrow key: [" < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "{UP}"
set /P "=] Wait and send an Enter key:" < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "{ENTER}"%
SendKeys% "exit{ENTER}"
goto :EOF
@end
Muss leider zugeben das ich da nicht wirklich durchblicke.
Hier mal mein Skript wie es zurzeit aussieht:
@echo off
color 0F
echo Sie haben KeePass gestartet!
set /p jn=Möchten sie KeePass wirklich ausfuehren (J/N)?
if "%jn%" == "j" goto ja
if "%jn%" == "n" goto nein
:ja
echo KeePass wird jetzt gestartet...
start "" "J:\DATENBANKEN\KeePass-2.29\KeePass.exe"
ping 127.0.0.1 -n 3 >nul
exit
:nein
echo Start von KeePass wird abgebrochen...
ping 127.0.0.1 -n 3 >nul
exit
Könnten sie mir das mit dem SendKeys nochmal genau erklären?
Bin ziemlicher anfänger.
Ich muss sagen deine Denkweise ist wirklich beeindruckend. Wenn du es so formulierst klingt es völlig logisch das es nicht möglich ist. Bin dir dennoch dankbar für deine Antwort. Wäre halt in jeder Hinsicht sehr Vorteilhaft gewesen wenn so etwas einfach mit Batch zu bewerkstelligen sei ohne Drittanbieter Programme zu benötigen.
Ich bin eher ein Fan davon alles nur mit Batch hinzubekommen. Und genau darauf arbeite ich gerade hin. Solltest du eventuell doch eine Idee bekommen würde ich mich darüber freuen wieder von dir zu hören.
Danke und Gruß Denny