Seite 1 von 2

[ ERLEDIGT ] ProgramParameter übergeben?

Verfasst: 04.06.2020 23:52
von udg
Hallo,

ich sitze nun schon wieder eine gefühlte Ewigkeit an der Übergabe von Parametern.

In der Batch lauten diese wie folgt:

Code: Alles auswählen

programm.exe p d output.blub
ich benötige:

Code: Alles auswählen

RunProgram("programm.exe ", "p d output.blub", "")
oder?

Code: Alles auswählen

RunProgram("programm.exe ", "p d " + "output.blub", "")
oder?

Code: Alles auswählen

RunProgram("programm.exe ", "p " + "d " + "output.blub", "")
nichts will funktionieren das Programm nimmt keine Parameter . Was mache ich denn falsch?


Grüße

Re: ProgramParameter übergeben?

Verfasst: 05.06.2020 00:10
von Kiffi
die Pfade zu programm.exe und output.blub stimmen?

Sind Leerzeichen in den Pfaden?

Grüße ... Peter

Re: ProgramParameter übergeben?

Verfasst: 05.06.2020 00:19
von udg
die Pfade stimmen. Wenn ich nur die Exe aufrufe startet es diese.
Ja der Zielpfad besitzt leerzeichen.
Aber wie gesagt, rufe ich nur die Exe auf, wird diese auch gestartet

Re: ProgramParameter übergeben?

Verfasst: 05.06.2020 00:35
von Kiffi
udg hat geschrieben:Ja der Zielpfad besitzt leerzeichen.
dann solltest Du diesen mit Anführungszeichen (Chr(34)) klammern.

so in etwa:

Code: Alles auswählen

Programm.s = Chr(34) + "kompletter/pfad/zu/programm.exe" + Chr(34)
Output.s   = Chr(34) + "kompletter/pfad/zu/output.blub" + Chr(34)

RunProgram(Programm, "p d " + Output, "")

Re: ProgramParameter übergeben?

Verfasst: 05.06.2020 02:55
von udg
leider immer noch nicht. (habe zum testen alle Leerzeichen aus dem Zielpfad entfernt) ---> nix

folgendes habe ich jetzt direkt in die Prozedur geschrieben:

Code: Alles auswählen

  Programm.s = Chr(34) + GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\RNC.EXE " + Chr(34)
  Output.s   = Chr(34) + GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\Game.rnc" + Chr(34)
  
  RunProgram(Programm, "p d " + Output, "")
mit Chr(34) + + Chr(34) und ohne ---> keine gewünschte Funktion.

eigentlich hatte ich die Pfade schon als Global festgelegt aber geht auch noch nicht.
so:

Code: Alles auswählen

Global RNCPath.s = GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\RNC.EXE "
Global GameRnc.s = GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\Game.rnc"
dann sollte normal auch das funktionieren:

Code: Alles auswählen

  Programm.s = RNCPath
  Output.s   = GameRnc
  
  RunProgram(Programm, "p d " + Output, "")
auch nix.

nach der Programm Exe muss ebenfalls ein Leerzeichen sein vor den beiden Optionen. Klammer ich die Optionen aus. Ruft es das programm.exe auf und sagt mir nun, dass ich doch bitte die beiden Schalter "p d" anhängen soll + File.blub

Irgendwo stimmt was nicht

Re: ProgramParameter übergeben?

Verfasst: 05.06.2020 12:42
von HeX0R
nach der Programm Exe muss ebenfalls ein Leerzeichen sein vor den beiden Optionen
Natürlich muss das, das muss immer und überall!
Sprich: RunProgram fügt das bereits selbständig ein!

Versuch's mal so:

Code: Alles auswählen

Programm.s = Chr(34) + GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\RNC.EXE" + Chr(34)
RunProgram(Programm, "p d Game.rnc", GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\)

Re: ProgramParameter übergeben?

Verfasst: 05.06.2020 13:35
von grapy
Zitat:
nach der Programm Exe muss ebenfalls ein Leerzeichen sein vor den beiden Optionen

Natürlich muss das, das muss immer und überall!
Sprich: RunProgram fügt das bereits selbständig ein!
Diese Aussage finde ich sehr verwirrend. :roll:

RunProgram fügt hier gar nirgends Leerzeichen ein und braucht diese auch gar nicht !!!

Re: ProgramParameter übergeben?

Verfasst: 05.06.2020 14:33
von udg
HeX0R hat geschrieben:
nach der Programm Exe muss ebenfalls ein Leerzeichen sein vor den beiden Optionen
Natürlich muss das, das muss immer und überall!
Sprich: RunProgram fügt das bereits selbständig ein!

Versuch's mal so:

Code: Alles auswählen

Programm.s = Chr(34) + GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\RNC.EXE" + Chr(34)
RunProgram(Programm, "p d Game.rnc", GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\")
Danke geht.

Re: ProgramParameter übergeben?

Verfasst: 05.06.2020 18:23
von HeX0R
grapy hat geschrieben: Diese Aussage finde ich sehr verwirrend. :roll:
RunProgram fügt hier gar nirgends Leerzeichen ein und braucht diese auch gar nicht !!!
Abstraktes Denken ist nicht so Deins?
Aber klar, richtig war die Aussage auch nicht :mrgreen:

Re: [ ERLEDIGT ] ProgramParameter übergeben?

Verfasst: 06.06.2020 00:19
von Sicro
Meines Wissens muss der Programmpfad nicht in Anführungszeichen gesetzt werden, wenn Leerzeichen im Pfad sind. Solch ein Pfad ist nur problematisch als Parameter, weil der Pfad dann zerstückelt vom Programm eingelesen wird:

Parameter: p d C:\Users\Paul B.\Datei.txt
wird an das Programm so übergeben:
Parameter1: p
Parameter2: d
Parameter3: C:\Users\Paul
Parameter4: B.\Datei.txt
Fehler: Pfad unvollständig

Übergibst du den Pfad in Anführungszeichen:
Parameter: p d "C:\Users\Paul B.\Datei.txt"
wird an das Programm so übergeben:
Parameter1: p
Parameter2: d
Parameter3: C:\Users\Paul B.\Datei.txt
Alles ok, weil nun klar ist, dass das Leerzeichen kein Parameter-Trenner ist.