PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dumme Frage: Parameter an Batch-Datei übertragen



blaulicht-tourist
02.10.2009, 17:00
Hallo,

die Frage ist vielleicht dumm, ich habe nur leider keine große Ahnung davon:

Ich möchte in FMS32 eine Aktion bei POCSAG Alarmierung starten. Dazu rufe ich unter Aktion des gewünschten Empfängers die Datei alarm.bat auf. Ohne weitere Parameter funktioniert das. Nun möchte ich aber die Textzuweisung zur RIC und den Alarmtext übergeben.

Habe herausgefunden, dass dies die Parameter %4 und %3 sind. Da dies ggf. Zeichenfolgen mit Leerzeichen sind, sollten sie in " stehen, also z.B. "%4".

Der Aufruf lautet also:
c:\...\alarm.bat "%4" "%3"

Richtig?

Welche Parameter muss ich dann in der Batch-Datei aufgreifen? Lauten die dann weiterhin %3 und %4 oder sind dass dann (da zwei Parameter) %1 und %2?

Löse ich die gleiche Batch-Datei manuell aus mit alarm.bat "RTW 1" "Text der Alarmierung", dann word die Datei ausgeführt und funktioniert.

Hier der Code:

@ECHO off
cls
"c:\programme\Mozilla Firefox\firefox.EXE" http://www.groupalarm.de/webin.php?log_user=000000^&log_pass=000000^&listcode=+3^&free=%1+%2^&flash=1

felix000
02.10.2009, 17:20
In der Batch musst du %1 und %2 benutzen, weil die Batch einfach durchnummeriert...

blaulicht-tourist
02.10.2009, 19:02
Gut, dann habe ich in der Batch alles richtig gemacht.
Da frage ich mich nun, warum dass nicht funktioniert.

Wie gesagt, ein Aufruf der Batch aus FMS-Pro ohne die Übergabe von Parametern
funktioniert. Sobald ich in der Aktion zusätzlich die Parameter übergebe, funktioniert es nicht mehr.

Der Aufruf mit c:\...\alarm.bat "%3" "%4" ist aber korrekt, oder?

felix000
02.10.2009, 19:26
Aufruf mit "%3" "%4", dann solltest du in der Batch mit %~1 und %~2 arbeiten, da so die " entfernt werden, da könnte das Problem sein...

blaulicht-tourist
02.10.2009, 19:52
Die Tilden in der Batch-Datei sind nicht notwendig. Das hätte zur Folge, dass die Leerzeichen entfallen und nur das erste Wort in dem Parameter verwertet werden. Um das zu verhindern setzt man die Parameter beim Aufruf der Batch-Datei ja in Anführungszeichen.

Beim manuellen Aufruf der Batch funktioniert das, z.B.
c:\....\alarm.bat 3-83-1 "intern 1 florastrasse"

Wenn das Script die " entfernt, käme da nur noch 3-83-1 intern raus und der Rest würde abgeschnitten.

Habe jetzt für den Aufruf nochmal an den Dateinamen im FMS32 die "%4" und "%3" gesetzt. Kommt nun eine Alarmierung rein, flackert ganz kurz das MS-DOS Fenster auf, die Batch wird aber nicht wirklich ausgeführt, jedenfalls wird die Aktion nicht ausgeführt. Wie gesagt, beim manuellen Aufruf oder beim Aufruf über FMS32 *OHNE* die Parameter funktioniert es.

blaulicht-tourist
02.10.2009, 20:52
Dämlicher Fehler - jetzt funktioniert es!

Die Batch-Datei lag in einem Verzeichnis, dessen Name ein Leerzeichen enthielt. Damit kam der wohl nicht zurecht. Nachdem ich die Datei nun auf c:\ gelegt habe, klappt es.

Danke für die Hilfe! :)

felix000
02.10.2009, 21:18
Die Tilden in der Batch-Datei sind nicht notwendig. Das hätte zur Folge, dass die Leerzeichen entfallen und nur das erste Wort in dem Parameter verwertet werden. Um das zu verhindern setzt man die Parameter beim Aufruf der Batch-Datei ja in Anführungszeichen.

Wenn das Script die " entfernt, käme da nur noch 3-83-1 intern raus und der Rest würde abgeschnitten.


Das stimmt nicht, man muss beim Übergeben die " verwenden um die Leerzeichen zu maskieren, aber beim Aufruf vom Firefox stören die " ja eigentlich und sollten entfernt werden und nur um die URL vorkommen...

blaulicht-tourist
03.10.2009, 13:30
Das klappt so. Der Aufruf von Firefox als Programm steht in meiner Batch in ". Die URL selbst, die beim Start aufgerufen werden soll, wird 'pur' üergeben ohne von " eingeklammert zu sein. Wie auch immer - bin froh das es jetzt nach stundenlangem probieren endlich geklappt hat.

Blacky
06.10.2009, 13:39
Kleiner Tip am Rande:
wenn du deine Batch-Dateien ausprobierst, setz ans Ende noch eine "pause", dann hast du nämlich die Fehlermeldungen im Fenster und kannst sie in Ruhe durchgehen.