Seite 1 von 1

Programm Parameter ">"

Verfasst: 05.06.2012 18:07
von Knight_Rider_2000
Ich habe ein Programm, welches folgende Syntax benötigt

Code: Alles auswählen

programm.exe datei1.txt > datei2.txt
Jedoch wenn ich es mittels RunProgram() aufzurufen macht das ">" Zeichen hierbei Probleme

Code: Alles auswählen

prog=RunProgram("programm.exe","datei1.txt > datei2.txt","",#PB_Program_Hide | #PB_Program_Open | #PB_Program_Error | #PB_Program_Read)
If prog
	While ProgramRunning(prog)
		String.s=ReadProgramError(prog)
		If String<>""
			Debug String
		EndIf
	Wend
EndIf
Cannot open >: Invalid argument
PS: Das Zeichen ">" ist dazu da, dass das programm.exe die Ausgabe nicht zurückgibt, sondern in eine Datei speichert.

Re: Programm Parameter ">"

Verfasst: 05.06.2012 18:12
von STARGÅTE
Probier mal:
RunProgram("programm.exe", #DQUOTE$+"datei1.txt > datei2.txt"+#DQUOTE$, ...

Re: Programm Parameter ">"

Verfasst: 05.06.2012 19:01
von Knight_Rider_2000
erstmal danke für die Antwort. Ich habe deine Idee gleich mal umgesetzt, jedoch keine Besserung.
cannot open C:\Users\{...}datei1.txt > C:\Users\{...}datei2.txt: Invalid argument
Muss man denn nicht eig das Zeichen "Escapen"? doch ein "\>" oder in manchen Foren hab ich auch "^>","^^^>" gesehen, was mir aber auch nicht half.

Re: Programm Parameter ">"

Verfasst: 05.06.2012 19:07
von STARGÅTE
Da ich nicht weiß, was das ">" bedeuten soll, kann cih dir leider nicht weiter helfen.

Fest steht, das jeder Parameter in doppelte Anführungszeichen eingeschlossen werden muss, wenn er nicht aus reinem Text gesteht.
"Parameter 1" "2. Parameter" "Parameter Nummer 3"

Vielleicht will dein Programm auch einfach nur zwei Parameter, also die beiden Dateinamen:

Code: Alles auswählen

RunProgram("programm.exe", #DQUOTE$+"datei1.txt"+#DQUOTE$+" "+#DQUOTE$+"datei2.txt"+#DQUOTE$, ...

Re: Programm Parameter ">"

Verfasst: 05.06.2012 19:10
von DarkDragon
@STARGATE:
">" soll eine Dateiausgabe werden - Stichwort Pipes.
Er will den StandardOutput von dem Programm in eine Datei weiterleiten. Hierzu benötigt man ReadProgramData(Programm, *Buffer, Groesse).

Leider habe ich gerade nicht sehr viel Zeit das ausführlicher zu beschreiben, wenn das mal bitte jemand anders übernehmen könnte?

Re: Programm Parameter ">"

Verfasst: 05.06.2012 19:16
von Knight_Rider_2000
Auf Linux Systemen weist der ">" daraufhin, dass die Ausgabe in die nachfolgende Datei geschrieben wird. Dieses Programm ist für Linux und Windows geschrieben und hat demzufolge auch in Windows diesen Teil. datei2.txt sagt hierbei nur aus, dass das Programm die Ausgabe von den vorherigen Datei(en) in datei2.txt schreiben soll.

Sinn und Zweck dieses Programmes ist es, dass ich in datei1.txt Kompilierten Lua Quellcode habe (den ich voher mit luac.exe kompilierte) nun als Überprüfung mit luadec("programm.exe") zurückdekompileren will um zu testen, ob luadec die Verschlüsselung schafft. Wenn luadec diese nicht schafft bleibt datei2.txt leer. Über die Cmd lässt sich programm.exe datei1.txt > datei2.txt ganz normal eingeben und ausführen, per Parameter schaffe ich es aber nicht.

Re: Programm Parameter ">"

Verfasst: 05.06.2012 19:18
von NicTheQuick
Probier mal

Code: Alles auswählen

prog=RunProgram("programm.exe","datei1.txt","",#PB_Program_Hide | #PB_Program_Open | #PB_Program_Error | #PB_Program_Read)
If prog
   While ProgramRunning(prog)
      String.s=ReadProgramString(prog)
      If String<>""
         Debug String
      EndIf
   Wend
EndIf
Dann sollte das, was dir Debug ausgibt dem eigentlichen Inhalt der datei2.txt entsprechen.

Wenn man in der Konsole schreibt

Code: Alles auswählen

programm.exe datei1.txt > datei2.exe
dann bekommt "programm.exe" den Parameter "datei1.txt" übergeben und alles, was das Programm normalerweise ausgeben würde, wird in "datei2.txt" geschrieben.