Batch-Datei aus xBase aufrufen?

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Batch-Datei aus xBase aufrufen?

Beitrag von Wolfgang_B »

Guten Morgen,
stehe wieder mal auf dem Schlauch...
Wie kann ich denn aus einem xBase-Programm (Menü) eine Batch-Datei aufrufen und ausführen?

Habe mich schon mit DLLCALL bemüht, kriege das aber nicht hin..
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Batch-Datei aus xBase aufrufen?

Beitrag von georg »

Hallo, Wolfgang -


viel, viel einfacher ...

Code: Alles auswählen

   cCmd := "cmd.exe"
   cCmdLine := "/C smp" + cID + ".cmd"
   nHandle := RunShell(cCmdLine, cCmd, lParallel, lBackGround)
einfach gerade aus einem meiner Programm rauskopiert.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Batch-Datei aus xBase aufrufen?

Beitrag von Wolfgang_B »

Hallo Georg,
danke erstmal.
Es wird zwar ein CMD-Fenster geöffnet, aber sonst nichts. Selbst wenn ich für cId den Batchnamen eingebe z.B. "test" und statt ".cmd" ".bat"
Zuletzt geändert von Wolfgang_B am Mo, 03. Mai 2021 12:26, insgesamt 1-mal geändert.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Batch-Datei aus xBase aufrufen?

Beitrag von Martin Altmann »

Moin Woflgang,
schau Dir mal seine zweite Zeile an - da baut er den Namen seiner Batchdatei zusammen.
In Deinem Fall müsste sie also wie folgt lauten:

Code: Alles auswählen

cCmd := "cmd.exe"
cCmdLine := "/C test.bat"
nHandle := RunShell(cCmdLine, cCmd, lParallel, lBackGround)
Zwei Hinweise:
Nimm möglichst nicht .bat, sondern .cmd als Endung.
Gib den kompletten Pfad an - sowohl bei der Belegung von cCmd, als auch bei cCmdLine

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Batch-Datei aus xBase aufrufen?

Beitrag von Wolfgang_B »

da ändert sich nichts. Es wird nur ein CMD-Fenster geöffnet ...
cId := "d:\vwin5\vwin5_backup"
cCmd := "cmd.exe"
cCmdLine := "/D smp" + cId + ".cmd"
nHandle := RunShell(cCmdLine, cCmd, .F., .F.)
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Batch-Datei aus xBase aufrufen?

Beitrag von Martin Altmann »

Dann korrigiere das mal richtig!
Laut Deinen Zeilen heißt Deine Batch: smpd:\vwin5\vwin5_backup.cmd :!:

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Batch-Datei aus xBase aufrufen?

Beitrag von Tom »

Es ist viel einfacher:

Code: Alles auswählen

RunShell(<cParameterfürdasBatch>,<cNameundPfaddesBatches>,.F.)
also beispielsweise

Code: Alles auswählen

RunShell ("c:\MeinProg\*.prg","copyfiles.bat",.F.)
(Und "copyfiles.bat" enthalt dann etwas wie "xcopy %1 f:\Sicherungen\SicherungHeute\".)

Ausgeführt wird automatisch im Ausführungsverzeichnis der EXE, es sei denn, man hat es gewechselt. Es muss das Recht vorhanden sein, den Batchjob auszuführen.
Herzlich,
Tom
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Batch-Datei aus xBase aufrufen?

Beitrag von Wolfgang_B »

Danke Tom, so einfach .. :D
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Batch-Datei aus xBase aufrufen?

Beitrag von Wolfgang_B »

Es geht noch weiter :D

Die Batchdatei ist im Verzeichnis d:\vwin5\vwinbackup.bat. Das funktioniert.
Im Netzbetrieb heißt das Verzeichnis \\dev3\vwin5. Die "\\" am Beginn des Pfades kann ich ja abfragen und den Aufruf entsprechend gestalten.

Code: Alles auswählen

IF SUBSTR(CURDIR(),1,2) == "\\"
		pfad := CURDIR()+"\"
	ELSE
		pfad := CURDRIVE()+":\"+CURDIR()+"\"
	ENDIf
			
	IF !FILE( pfad+"vwinbackup.bat")
		MSgBox("Datei -> "+pfad+"vwinbackup.bat"+" ist nicht vorhanden")
	 	RETURN(NIL)
	ELSE	
	 	RunShell (pfad+"vprog.exe","vvwinbackup.bat",.F.)
	ENDIF
Das Problem kommt dann, wenn ich dieses Konstrukt auf dem Netzwerkrechner aufrufe. Dann kommt klassische Fehlermeldung:

"CMD.EXE wurde mit dem oben angegebenen Pfad als aktuellem Verzeichnis gestartet. UNC-Pfade werden nicht unterstützt. Stattdessen wird das Windows-Verzeichnis als aktuelles Verzeichnis gesetzt" --> Damit -> Der Befehl "7z" (in der Batchdatei) ist entweder falsch oder wurde nicht gefunden ..

gewünscht ist: Ausführen der Batch-Datei auf dem Rechner, auf dem das xBase-Programm installiert ist und anlegen der 7z-Datei im Verzeichnis der Programmdatei.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Antworten