Einsteiger braucht Hilfe bei 'RunProgram'

Anfängerfragen zum Programmieren mit PureBasic.
rollovanoyten
Beiträge: 6
Registriert: 13.12.2014 10:51
Wohnort: Oyten

Einsteiger braucht Hilfe bei 'RunProgram'

Beitrag von rollovanoyten »

Liebe "Gemeinde", ein Einsteiger bittet um Hilfe:

Ich möchte mit Hilfe des Programms CMD.exe ein Verzeichnis aller Ordner unterhalb eines vorgegebenen Startordners erstellen.
Die Ausgabe soll in das ClipBoard gestellt, in eine Textdatei kopiert und weiterverarbeitet werden.

Mit dem nachstehenden Programm wird mir zwar die DOS Shell angezeigt, aber der Parameter "Parm$" nicht übergeben.
Gebe ich ihn per Hand ein und schließe das DOS Shell Fenster, wird der Rest des Programms korrekt ausgeführt.
(Windows 7 SP 1 x64 / PB 5.31)

Was mache ich falsch? Kann mir jemand weiterhelfen?
Vorab schon mal vielen Dank!
RolloVanOyten

Code: Alles auswählen

;	(1) Variablen für die DOS Shell
	Prog$ = "C:\Windows\System32\cmd.exe"
	Ordner$ = "F:\Akten\X_HVO"
	Parm$ = " DIR /S /B /AD " + Ordner$ + " | clip"
		
;	(2) CMD.exe erstellt ein DirVerz und stellt es ins ClipBoard.
	dv = RunProgram (Prog$, Parm$, Ordner$, #PB_Program_Open)
	If IsProgram(dv)
		WaitProgram(dv) 
		KillProgram(dv)
		CloseProgram(dv)
	Else
		Debug "Fehler " + Str(dv)
	EndIf
	
;	(3) Inhalt des ClipBoards in eine Textdatei schreiben.
	If CreateFile(1, "D:\Work\AlleDirs.txt")
		WriteString(1, GetClipboardText(), #PB_Ascii)
		CloseFile (1)
	EndIf

	End
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Einsteiger braucht Hilfe bei 'RunProgram'

Beitrag von Nino »

Code: Alles auswählen

; (1) Variablen für die DOS Shell
Prog$ = "C:\Windows\System32\cmd.exe"
Ordner$ = "F:\Akten\X_HVO"
Parm$ = "/C DIR /S /B /AD " + Ordner$ + " | clip"

; (2) CMD.exe schreibt eine Liste der gewünschten Verzeichnisse ins ClipBoard.
dv = RunProgram(Prog$, Parm$, Ordner$, #PB_Program_Open)
If IsProgram(dv)
   WaitProgram(dv)
   CloseProgram(dv)
Else
   Debug "Fehler " + Str(dv) + " beim Ausführen von RunProgram()"
EndIf

; (3) Inhalt des ClipBoards in eine Textdatei schreiben
If CreateFile(1, "D:\Work\AlleDirs.txt")
   WriteString(1, GetClipboardText(), #PB_Ascii)
   CloseFile (1)
Else
   Debug "Fehler beim Schreiben der Textdatei"
EndIf
rollovanoyten
Beiträge: 6
Registriert: 13.12.2014 10:51
Wohnort: Oyten

Re: Einsteiger braucht Hilfe bei 'RunProgram'

Beitrag von rollovanoyten »

Hallo Nino

herzlichen Dank für die schnelle Hilfe - es hat wunderbar geklappt!
An der Stelle hab' ich dummerweise nicht gesucht.
Aber ich habe etwas dazugelernt.

Gruß / RolloVanOyten
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Einsteiger braucht Hilfe bei 'RunProgram'

Beitrag von Kiffi »

müsste eigentlich auch mit dem Parameter #PB_Program_Wait funktionieren:

Code: Alles auswählen

; (2) CMD.exe schreibt eine Liste der gewünschten Verzeichnisse ins ClipBoard.
RunProgram(Prog$, Parm$, Ordner$, #PB_Program_Wait)

; (3) Inhalt des ClipBoards in eine Textdatei schreiben
If CreateFile(1, "D:\Work\AlleDirs.txt")
 [...]
Grüße ... Peter
a²+b²=mc²
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Einsteiger braucht Hilfe bei 'RunProgram'

Beitrag von Nino »

Kiffi hat geschrieben:müsste eigentlich auch mit dem Parameter #PB_Program_Wait funktionieren:
Wo ist der Smiley, der sich mit der Hand auf die Stirn schlägt?

Mir schwante doch, dass ich sowas bisher immer ohne WaitProgram() gemacht hatte. :D
Antworten