Batch starten mit RunShell() [Erledigt]
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Batch starten mit RunShell() [Erledigt]
Moin,
Gerade kämpfe ich mit RunShell(). Ich muß aus meiner Anwendung heraus eine Batch aufrufe und dieser Batch einen Parameter mitgeben, den ich in Form einer Variablen vorliegen habe. Das Ganze soll Asynchron laufen.
Kann mir da jemand einen Tipp geben, wie der Aufruf aussehen muß? Ich bekomme das einfach nicht ans Laufen. Egal wie ich das alles zusammenstelle. Manchmal geht sehr kurz ein DOS-Fenster auf, aber zu schnell um lesen zu können, was da drin steht.
Jan
Gerade kämpfe ich mit RunShell(). Ich muß aus meiner Anwendung heraus eine Batch aufrufe und dieser Batch einen Parameter mitgeben, den ich in Form einer Variablen vorliegen habe. Das Ganze soll Asynchron laufen.
Kann mir da jemand einen Tipp geben, wie der Aufruf aussehen muß? Ich bekomme das einfach nicht ans Laufen. Egal wie ich das alles zusammenstelle. Manchmal geht sehr kurz ein DOS-Fenster auf, aber zu schnell um lesen zu können, was da drin steht.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Mach doch ans Ende Deiner Batch ein PAUSE, dann kannst Du lesen, was da steht.
Viele Grüße,
Martin
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Der startet einfach nur ein neues CMD-Fenster. Und bleibt am Prompt stehen.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Zeige doch mal den Aufruf der Batch.
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Code: Alles auswählen
RunShell(<cParams>,<cCommand>,.T.)
Code: Alles auswählen
CD \AppInst
XCOPY %1 .
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Hallo Tom,
das ist ja gerade der Punkt. Ich mach das in dieser Variante dann z. B. so (wie gesagt, im Frust habe ich schon alle möglichen und unmöglichen Varianten ausprobiert):
Nix passiert, außer dieses kurz aufblitzende CMD-Fenster, das eben NICHT die Batch-CMD ist.
Insgesamt gesehen liegt das Ganze auf einem PushButton. Die Batch soll also erst aufgerufen werden, wenn man da raufklickt. Der Codeblock sähe dann insgesamt so aus:
Die MsgBox() ist da jetzt natürlich nur zur Kontrolle drin, zeigt mir aber den korrekten Wert an.
Jan
das ist ja gerade der Punkt. Ich mach das in dieser Variante dann z. B. so (wie gesagt, im Frust habe ich schon alle möglichen und unmöglichen Varianten ausprobiert):
Code: Alles auswählen
RunShell(cVariable, "komm.bat", .T.)
Insgesamt gesehen liegt das Ganze auf einem PushButton. Die Batch soll also erst aufgerufen werden, wenn man da raufklickt. Der Codeblock sähe dann insgesamt so aus:
Code: Alles auswählen
{|| msgbox(cVariable), RunShell(cVariable, "komm.bat", .T.)}
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Jan,
zeige doch mal den Inhalt deiner Variablen, die Du übergibst! Sind da Leerzeichen drin Dann muss das doppelt gequotet werden
zeige doch mal den Inhalt deiner Variablen, die Du übergibst! Sind da Leerzeichen drin Dann muss das doppelt gequotet werden
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Martin,
nein, keine Leerzeichen in der Variablen. Ein durchgehende String.
Jan
nein, keine Leerzeichen in der Variablen. Ein durchgehende String.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Außerdem muss "komm.bat" im Ausführungsverzeichnis der Applikation liegen.
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Batch starten mit RunShell()
Guten Morgen,
das läuft bei mir:
Also, ich rufe CMD.exe auf, und als Parameter übergebe ich
/C => als Parameter an cmd.exe;
smpXYZ.cmd => als Name der Batchdatei, die auszuführen ist
Wenn Parameter an smpXYZ.cmd zu übergeben sind, kann man diese an cCmdLine anhängen.
das läuft bei mir:
Code: Alles auswählen
cCmd := "cmd.exe"
cCmdLine := "/C smp" + cID + ".cmd"
nHandle := RunShell(cCmdLine, cCmd, lParallel, lBackGround)
/C => als Parameter an cmd.exe;
smpXYZ.cmd => als Name der Batchdatei, die auszuführen ist
Wenn Parameter an smpXYZ.cmd zu übergeben sind, kann man diese an cCmdLine anhängen.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Georg,
keine Änderung.
Jan
keine Änderung.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Gerade sehe ich, das in der CMD-box, die da aufgeht, irgendwas von "unbekanntem Befehl oder konnte nicht gestartet werden" aufblitzt. Komisch. Denn die Batch exisitiert. Und liegt im gleichen Verzeichnis wie die exe. Und selbst wenn ich in die cCmdLine den kompletten Batch-Pfad eintrage kommt diese Meldung.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Der Fehler dürfte in der Batch sein!
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Tse. Der hat in der aufgerufenen Batch den befehl "Wait" angemeckert, den ich auf Martins Hinweis hin eingebaut hatte.
Nehm ich den raus geht eine CDM-Box auf, die ist komplett leer, geht sofort wieder zu. Und die aufgerufene Batch wird nicht gestartet.
Verrückt.
Jan
Nehm ich den raus geht eine CDM-Box auf, die ist komplett leer, geht sofort wieder zu. Und die aufgerufene Batch wird nicht gestartet.
Verrückt.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Die aufgerufene Batch hat diesen Inhalt:
Das Programm komm steht im gleichen Verzeichnis. Es gibt da auch keine Fehlermeldung, das es das nicht geben würde. Es wird einfach nur nicht gestartet.
jan
Code: Alles auswählen
komm %1
exit
jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Ich habe nichts von WAIT geschrieben, sondern von PAUSE - richtig lesen
Und schreibe in der batch nicht einfach komm, sondern den kompletten Pfad davor.
Viele Grüße,
Martin
Und schreibe in der batch nicht einfach komm, sondern den kompletten Pfad davor.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell()
Martin,
stimmt, sorry. Falsch gedacht beim tippen.
Aber auch mit kompletten Pfad in der Batch keine Änderung. CMD-Fenster geht auf, da steht auch der Pfad im Prompt drin, in der nächsten zeile wieder nur das Prompt, das Programm wird aber nicht gestartet.
Jan
stimmt, sorry. Falsch gedacht beim tippen.
Aber auch mit kompletten Pfad in der Batch keine Änderung. CMD-Fenster geht auf, da steht auch der Pfad im Prompt drin, in der nächsten zeile wieder nur das Prompt, das Programm wird aber nicht gestartet.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell() [Erledigt]
So. jetzt läuft das. Fragt mich nicht, wo die Änderung liegt. Einfach das Projekt noch einmal komplett neu aufgebaut, und plötzlich ging es.
Vielen Dank für Eure Hilfe und Geduld.
Jan
Vielen Dank für Eure Hilfe und Geduld.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell() [Erledigt]
Das Ausführungsverzeichnis ist nicht immer das EXE Verzeichnis, daher ist es immer ratsam den PFAD z.B. von der eigenen EXE zu ermitteln und die Batch mit komplettem Pfad aufzurufen.
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell() [Erledigt]
Ich würde sagen, das ist zu 100% ( - 0,000000000000000000001% ) der Fehler bei Janbrandelh hat geschrieben:Das Ausführungsverzeichnis ist nicht immer das EXE Verzeichnis, daher ist es immer ratsam den PFAD z.B. von der eigenen EXE zu ermitteln und die Batch mit komplettem Pfad aufzurufen.
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell() [Erledigt]
Mmh. Bei Xbase++-Anwendungen, die ja ohne die Runtimes nicht laufen, ist es schon eine originelle Konstellation, die EXE nicht im Ausführungsverzeichnis zu lagern. Oder sie woanders auszuführen.Das Ausführungsverzeichnis ist nicht immer das EXE Verzeichnis
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell() [Erledigt]
Hallo Tom,
ich musste feststellen, dass je nach Art des Aufrufes das Ausführungsverzeichnis nicht das EXE Verzeichnis war und es kommt vor, dass Fremdprogramm (PDF-Druckertreiber) dieses auch verstellen.
Alle (Xbase++) DLLs werden immer aus dem Verzeichnis der EXE geladen, aber bei RUNSHELL() sollte man sich nicht darauf verlassen. Es kann sein, dass ich mich genau hier irre, aber sicher ist sicher
ich musste feststellen, dass je nach Art des Aufrufes das Ausführungsverzeichnis nicht das EXE Verzeichnis war und es kommt vor, dass Fremdprogramm (PDF-Druckertreiber) dieses auch verstellen.
Alle (Xbase++) DLLs werden immer aus dem Verzeichnis der EXE geladen, aber bei RUNSHELL() sollte man sich nicht darauf verlassen. Es kann sein, dass ich mich genau hier irre, aber sicher ist sicher
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Batch starten mit RunShell() [Erledigt]
Ich habe exakt die Erfahrung gemacht, die Hubert aufführt.
Bei mir waren es auch PDF-Druckertreiber, die das Ausführungsverzeichnis änderten.
Uli
Bei mir waren es auch PDF-Druckertreiber, die das Ausführungsverzeichnis änderten.
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück