Seite 1 von 1

Einsteiger braucht Hilfe bei 'RunProgram'

Verfasst: 31.07.2015 08:10
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

Re: Einsteiger braucht Hilfe bei 'RunProgram'

Verfasst: 31.07.2015 10:16
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

Re: Einsteiger braucht Hilfe bei 'RunProgram'

Verfasst: 31.07.2015 10:56
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

Re: Einsteiger braucht Hilfe bei 'RunProgram'

Verfasst: 31.07.2015 12:29
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

Re: Einsteiger braucht Hilfe bei 'RunProgram'

Verfasst: 31.07.2015 12:38
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