PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme bei Übergabe von mehr als 2 Parametern



Feuermännchen
20.01.2010, 16:38
Servus Ihr!

Ich möchte, dass mir FMS32-Pro bei einer Pocsag-Meldung die Parameter 1, 3 und 4 übergibt.
Mein Aufruf sieht folgendermaßen aus:

C:\Program Files\Heirue-Soft\FMS32-PRO\Aktionen\poc_latest.bat "%4" - "%3" - "%1"

nun ist es aber so, dass mir FMS32 lediglich die ersten beiden parameter übergibt und den letzten mit einem "-" beschreibt. Dabei ist es irrelevant, in welcher Reihgenfolge ich sie mir aufrufe (1,3,4/ 4,3,1/...). Immer der letzte wird zu einem Minus. Kann das FMS32 nicht mehr als 2 Parameter übergeben?

Ich nutze Windows 7 Ultimate (hab's aber auch schon unter Xp Prof probiert, auch hier selbes Phänomen)

Meine Batch sieht wie folgt aus (für den Fall das der fehler dort liegen sollte):

FOR /f "tokens=1-2 delims=/ " %%a in ('TIME/T') do SET t_time=%%a%%b
echo %t_time% > c:\poc1.txt
echo %4 >> C:\poc1.txt
echo %3 >> C:\poc1.txt
echo %1 >> C:\poc1.txt
C:\alarm\ansiasci c:\poc1.txt c:\poc.txt /ansi /o
del C:\poc1.txt


Die Parameter werden Zeilenweise in poc.txt geschrieben. Funktioniert auch alles soweit, bis eben auf das beschriebene Phänomen.

Hoffe ihr könnt helfen,

Feuermännchen

firefighter162
20.01.2010, 21:53
versuch mal "%1" "%2" "%3"
also ohne -. mit den leerzeichen bin ich mir nicht sicher. musst du mal ausprobieren.

%* übergibt alle 4 parameter.

Mr.Pieper
21.01.2010, 12:01
Hy.. Also als erstes:
Programmpfad in FMS32 abändern in:

"C:\Program Files\Heirue-Soft\FMS32-PRO\Aktionen\poc_latest.bat" "%4 %3 %1"

Somit sollten dann schonmal die Parameter aus FMS32 richtig rausgehen.
Die " am Anfang und Ende des Pfades bewirken, das Leerschritte im Pfad ignoriert werden.
Indem Du dann "%1 %2 %3" als Parameter übergibst, weiß auch die Batch, was sie soll.


In der Batch hingegen musst Du die Parameter anders entgegen nehmen.
Denn die Batch geht der "Reihenfolge" nach.

Sprich "%4" wäre dann %1 in der Batch.

Wenn ich mich jetzt nicht irre, so sollte es doch so richtig sein.
Wenn ich mich irren sollte, wird Felix mir sicher gleich wieder an den Hals springen.

Feuermännchen
21.01.2010, 15:01
Naja ok fast. Nun hab ich zwar alle parameter in die batch übernommen bekommen, aber sie liegen alle auf einer zeile und nicht zeilenweise... wat also nu?

Feuermännchen
21.01.2010, 16:53
Sooooo, es lag am Aufruf der parameter im FMS32. es muss wie folgt aussehen, dass die parameter richtig übergeben werden:


"C:\Program Files\Heirue-Soft\FMS32-PRO\Aktionen\poc_latest.bat" "%1 %2 %3 %4"

Wichtig iss, wie schon erwähnt, alles der reihe nach und nichts durcheinander. Dann klappts auch mit dem nachbarn und seiner batch.

Die bat sieht dann wie folgt aus:

FOR /f "tokens=1-2 delims=/ " %%a in ('TIME/T') do SET t_time=%%a%%b
echo %t_time% > c:\poc1.txt
echo %1 >> C:\poc1.txt
echo %2 >> C:\poc1.txt
echo %3 >> C:\poc1.txt
echo %4 >> C:\poc1.txt
C:\alarm\ansiasci c:\poc1.txt c:\poc.txt /ansi /o
del C:\poc1.txt

Dank an alle Mitwirkenden!

Thread kann closed.

felix000
21.01.2010, 17:21
Also grundsätzlich übergibst du die Parameter in der Reihenfolge wie du willst und wenn ein Leerzeichen vorkommen kann, dann in Anführungszeichen:

C:\pfad\batch.bat parameter1 "das ist der zweite parameter" 3
in der Batch schauts dann so aus:
%1 = parameter1
%2 = "das ist der zweite parameter"
%3 = 3

Wenn du jetzt ein Programm mit FMS32pro ausrufst, dann haben die Platzhalter in FMS32pro(%x) nichts mit den Parametern in der Batch (auch %x) zu tun.
In der Batch wird einfach durch gezählt.

Feuermännchen
21.01.2010, 17:36
Na ok. Wer weiß, was ich da noch für ein Fehler drin hatte. es ging jedenfalls erst, als auch in der batch die reihenwolge stimmte. dennoch danke allerseits