CMD File mit Parameter aufrufen
Moderator: Moderatoren
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
CMD File mit Parameter aufrufen
Ich habe folgende
docopy.cmd
Batch/command Datei
---
set infile=%1%
set outfile=%2%
move %outfile% %infile%
--
wie muss ich die mit Runshell aufrufen ?
Die Datei soll im Hintergrund laufen und es soll gewartet werden, bis diese abgearbeitet ist.
docopy.cmd
Batch/command Datei
---
set infile=%1%
set outfile=%2%
move %outfile% %infile%
--
wie muss ich die mit Runshell aufrufen ?
Die Datei soll im Hintergrund laufen und es soll gewartet werden, bis diese abgearbeitet ist.
Gruß
Klaus
Klaus
-
- UDF-Programmierer
- Beiträge: 63
- Registriert: Mi, 23. Dez 2015 22:46
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 4 Mal
Re: CMD File mit Parameter aufrufen
Moin,
bezüglich der Runshell hatte Carlo mal was ganz nützliches gepostet:
viewtopic.php?f=32&t=10665&p=124627&hil ... ll#p124627
Vielleicht hilft Dir das weiter.
bezüglich der Runshell hatte Carlo mal was ganz nützliches gepostet:
viewtopic.php?f=32&t=10665&p=124627&hil ... ll#p124627
Vielleicht hilft Dir das weiter.
Grüße von Philipp
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: CMD File mit Parameter aufrufen
Finden wir zunächst raus was du wirklich willst ...
RunShell( <cCmdLine> , ;
[<cProgram>] , ;
[<lAsync>] , ;
[<lBackground>],
[<aStdHandles>|<lInherit>] ) --> xReturn
auf Ergebnis warten ist Syncron/Asyncron (die Hintergrundverarbeitung), der Parameter heißt <lAsync>, du willst aber Syncron, also <lAsync> = .f.
nun der Aufruf der CMD Datei, mit Parametern, warum eigentlich ?
umsortiert ( %1% und %2% könnte man direkt bei MOVE angeben ...)
und dann move aufruft.
Wenn du die CMD selbst erstellst könntest du das schon vorher in der EXE erledigen.
bei dir sollte das funktionieren:
// wenn Blanks im Namen der Dateien vorkommen können, müssen die in "" eingeschlossen werden !
hier ein anderes Beispiel:
um das mit den " um die Dateinamen zu vereinfachen nutze ich gerne Variablen:
RunShell( <cCmdLine> , ;
[<cProgram>] , ;
[<lAsync>] , ;
[<lBackground>],
[<aStdHandles>|<lInherit>] ) --> xReturn
Hintergrund ist <lBackground> = .t. gemeint ist versteckt, eigentlich ist Hintergrundverarbeitung ja unabhängig, aber das meinen die nicht.
auf Ergebnis warten ist Syncron/Asyncron (die Hintergrundverarbeitung), der Parameter heißt <lAsync>, du willst aber Syncron, also <lAsync> = .f.
nun der Aufruf der CMD Datei, mit Parametern, warum eigentlich ?
Ich verstehe nicht, warum du eine CMD machst, welche Parameter abfragt,
umsortiert ( %1% und %2% könnte man direkt bei MOVE angeben ...)
und dann move aufruft.
Wenn du die CMD selbst erstellst könntest du das schon vorher in der EXE erledigen.
Ich baue hier gerne die Parameter zusammen, Beispiel Parameter ist Pfad und Dateinamen einer PDF, Programm ist das Standardprogramm für PDF anzeige:
Code: Alles auswählen
if file(cPfad+cPDF)
if ! file(cAcrobat)
cAcrobat := GetStandardProgramm(cPDF, cPfad)
endif
runshell(cPfad+cPDF,cAcrobat,.t.)
endif
// wenn Blanks im Namen der Dateien vorkommen können, müssen die in "" eingeschlossen werden !
Code: Alles auswählen
cParam := ' /C MeineCmd.CMD "c:\pfad\Meine Quell Datei" "c:\pfad\Meine Ziel Datei" ' // also String einleiten mit ' oder [ und beenden mit ' oder ]
runshell(cParam,"CMD.EXE",.f.,.t.)
Code: Alles auswählen
cCmd := "cmd.exe"
cCmdLine := "/C smp" + cID + ".cmd" // am Anfang das '/C' soll verhindern, dass viele Instanzen von CMD.EXE gleichzeitig laufen, /C nimmt den aktuellen
RunShell(cCmdLine, cCmd, lParallel, lBackGround)
Code: Alles auswählen
cCmd := "cmd.exe"
DQ := chr(34)
cCmdLine := "/C docopy.cmd "+DQ+cVonFile+DQ+" "+DQ+cNachFile+DQ+" "
runshell(cCmdLine, cCMD,.f.,.t.)
oder auch:
runshell(cCmdLine, , .f. , .t. ) // the default value is "CMD.EXE" (OS/2, Windows NT) also könnte man das auch einfach weg lassen
Gruß
Hubert
Hubert
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: CMD File mit Parameter aufrufen
Hubert,
vor dem MOVE kommen noch ein paar andere Befehle, die aber hier nicht wichtig sind
vor dem MOVE kommen noch ein paar andere Befehle, die aber hier nicht wichtig sind
Gruß
Klaus
Klaus
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: CMD File mit Parameter aufrufen
Hallo Klaus,
zum Glück hast du diese Frage gestellt, eben wollte ich eine Batch mit Variablen bestücken und hab total vergessen wie es geht ... aber ich wusste du hattest da ein Beispiel
zum Glück hast du diese Frage gestellt, eben wollte ich eine Batch mit Variablen bestücken und hab total vergessen wie es geht ... aber ich wusste du hattest da ein Beispiel
Gruß
Hubert
Hubert
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: CMD File mit Parameter aufrufen
Ich nutze die Runshell immer so.....
Funktioniert zuverlässig....
Gruß Stefan
Code: Alles auswählen
cmdline:="/C " + cProgrammPfad + "\BATCH.BAT "
RUNSHELL( cmdline,"cmd.exe",.F.,.T.)
Gruß Stefan