Programm Parameter ">"

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

Programm Parameter ">"

Beitrag 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.
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Programm Parameter ">"

Beitrag von STARGÅTE »

Probier mal:
RunProgram("programm.exe", #DQUOTE$+"datei1.txt > datei2.txt"+#DQUOTE$, ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

Re: Programm Parameter ">"

Beitrag 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.
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Programm Parameter ">"

Beitrag 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$, ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Programm Parameter ">"

Beitrag 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?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

Re: Programm Parameter ">"

Beitrag 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.
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Programm Parameter ">"

Beitrag 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.
Antworten