physikuss

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.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 136480

Url: https://administrator.de/forum/unterschied-zwischen-ausfuehrung-im-batch-und-cmd-line-136480.html

Ausgedruckt am: 28.04.2025 um 19:04 Uhr

bastla
bastla 21.02.2010 um 15:33:13 Uhr
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
Physikuss
Physikuss 21.02.2010 um 17:37:19 Uhr
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