physikuss
Goto Top

Unterschied zwischen Ausführung im Batch und CMD-Line?

Hallo,

ich möchte durch Verwendung von curl in einer Batch-Datei die Konfiguration meines Routers automatisieren. Dabei handelt es sich um eine Fritzbox 7270, welche seit den letzten 2 Firmware-Versionen SIDs verwendet.
Um nun trotzdem darauf zugreifen zu können, lasse ich in einem ersten curl-Aufruf eine aktuelle SID auslesen und möchte diese in den weiteren curl-Aufrufen verwenden.
Das soll wie folgt funktionieren:

@echo off

rem Hier wird die SID vergeben und in der Variable SID gespeichert
for /f "tokens=2 delims=<>" %%i in ('curl "http://fritz.box/cgi-bin/webcm?getpage=../html/login_sid.xml"^|Find /i "SID"') do @set SID=%%i  
echo Die SID lautet %SID%

rem Hier der Versuch die SID mit curl zu verwenden
@echo on
curl "http://fritz.box/cgi-bin/webcm" -d "sid=%SID%&connection0%3Asettings%2Fcmd_disconnect="  

Dabei gibt es nun folgendes Problem:
Wenn ich diese Batch so ausführe, tut sich an meinem Router nichts. Nach der Ausführung bleibt (solange ich die cmd-Line nicht schließe) die Umgebungsvariable %SID% erhalten (die SID bleibt auch in der Fritzbox 10 min aktiv). Wenn ich nun also den zweiten curl-Aufruf kopiere und in der cmd-Line einfüge funktioniert es wie gewünscht.
Um dem nachzugehen, habe ich den zweiten curl-Aufruf einfach mal in eine extra Batch kopiert und diese anschließend ausgeführt. Dabei funktioniert es ebenfalls nicht.

Daher nun meine Frage: Welches Feature in der Batch-Verarbeitung verhindert, dass ich einen Befehl, der auf der Kommandozeile funktioniert, einfach in einer Batch ausführen lasse?

Ich hoffe ihr könnt mir helfen. Vielen Dank im Vorraus.

Content-Key: 136480

Url: https://administrator.de/contentid/136480

Printed on: April 19, 2024 at 06:04 o'clock

Member: bastla
bastla Feb 21, 2010 at 14:33:13 (UTC)
Goto Top
Hallo Physikuss und willkommen im Forum!

Innerhalb eines Batches musst Du Prozentzeichen, die als "gewöhnliche" Zeichen ausgegeben werden sollen, verdoppeln - also etwa:
curl "http://fritz.box/cgi-bin/webcm" -d "sid=%SID%&connection0%%3Asettings%%2Fcmd_disconnect="
Grüße
bastla
Member: Physikuss
Physikuss Feb 21, 2010 at 16:37:19 (UTC)
Goto Top
Mensch danke,
das ging ja schnell.

Das war natürlich das Problem und jetzt komme ich weiter.

ps.: In anderen Batches hab ich mich schon mal darüber gewundert face-smile