Wie lese ich mittels Batch-File (CMD) eine einzelne Zeile aus?

Guten Abend zusammen,

ich möchte mir eine Batch-File schreiben, mit der ich den Namen meines WLAN-Netzwerks (SSID) auslese. Dazu lasse ich mir eine Zusammenfassung der Drahtlosinformationen mittels netsh wlan show all anzeigen. Diesen umfangreichen Text filtere ich nach dem Begriff Status mittels netsh wlan show all | find /N "Status".

Das Ergebnis sind auf meinem System vier Einträge, die exemplarisch wie folgt aussehen:

[64]   Status                 : Verbunden
[79]   Status des gehosteten Netzwerks : Nicht verfügbar
[92]Status des gehosteten Netzwerks
[94]   Status                : Nicht verfügbar

Ich weiß, dass in Zeile 65 der aktive/aktuelle WLAN-Netzwerkname (SSID) hinterlegt ist. Diese sieht folgendermaßen aus:

SSID                  : FRITZ!Box 7520 SZ

In meinem Fall müsste ich den Text in Zeile 65, der nach einem Leerzeichen nach dem Doppeltpunkt beginnt, extrahieren und in einer Variablen abspeichern.

Ich weiß, dass unter der CMD-Eingabeaufforderung eine Variablenzuweisung nicht nach dem klassischen Prinzip

var = Berechnung

erfolgt, sondern stattdessen eine for-Schleife zu verwenden ist. Mein Ansatz dafür lautet

for /f %%a in ('netsh wlan show all ^|find /N "Status"') do (set "strSSID=%%a")

Jedoch müsste ich die Laufvariable %%a (?) auf 1 begrenzen, weil ich sonst den letzten Eintrag ([94]) abspeichere.

Meine Fragen lauten daher konket:

  1. Wie limitiere ich die Laufvariable einer for-Schleife?
  2. Wie lese ich dann die um eins inkremetierte Zeile aus?
  3. Wie extrahiere ich den Text dieser Zeile nach dem Doppelpunkt sowie dem einen Leerzeichen bis zur EOL und speichere diesen in einer Variable ab?

Ich glaube, dass ich der Lösung schon recht nah bin, aber hier komme ich leider nicht weiter. Ich freue mich, über jeden Hinweis und weitere Hilfe.

Viele Grüße,

Christian

bat, Batch, cmd
CMD Numerische Konstante Fehler?

Ich habe mir ein Skript geschrieben, dass jeden Tag automatisch den richtigen Bericht öffnet. Das ist alle zwei Wochen eine Nummer mehr. Hat jetzt einen Monat ohne Probleme funktioniert. Heute hat er aber den Bericht von letzer Woche geöffnet. Gestern hatte er den richtigen. Ich hoffe ihr könnt anhand des Codes und es Fehlers sagen, wo das Problem liegt. Bin Systemintegrator in der Ausbildung. Kenne mich also ein ganz kleines bisschen mit programmieren aus. Ich glaube das ist ein total dämlicher Fehler. Aber ich finde ihn nicht. In der Berufsschule lerne ich übrigens Python. Deswegen kenne ich mich mit cmd kaum aus. Brauche ich ja eigentlich auch nicht für den Berufsalltag.

Hier der Code:

echo off
set jahr=%date:~-4%
echo Heute ist der %date%


if '%jahr%'=='2020' goto 2020
echo Es gibt keinen vorgefertigten Bericht mehr
Timeout /t 20


:2020
setlocal
chcp 1252>nul


REM KalenderWoche (Mo-SO)
REM Datum
set /A d=%date:~0,2%
set /A m=%date:~3,2%
set /A y=%date:~6,4%


REM Tag des Jahres
if %m% == 1 set /A DoY=d
if %m% == 2 set /A DoY=d+31
if %m% == 3 set /A DoY=d+59
if %m% == 4 set /A DoY=d+90
if %m% == 5 set /A DoY=d+120
if %m% == 6 set /A DoY=d+151
if %m% == 7 set /A DoY=d+181
if %m% == 8 set /A DoY=d+212
if %m% == 9 set /A DoY=d+243
if %m% == 10 set /A DoY=d+273
if %m% == 11 set /A DoY=d+304
if %m% == 12 set /A DoY=d+334


REM Schaltjahr?
set /A LY=(y/4)*4
if %y% NEQ %LY% goto noLY
if %m% GTR 2 set /A DoY=DoY+1


:noLY
REM Tag der Woche (Sonntag = 0)
for /f %%g in ('wmic path win32_localtime get dayofweek^|findstr /v /r "^$"') do (set DoW=%%g)
REM (Sonntag = 7)
if %DoW% == 0 set /A DoW=7


REM KW
set /A nSd=DoY+(7-DoW)
set /A KW=nSd/7
set /A delta=nSd-(KW*7)
if %delta% GTR 3 set /A KW=KW+1


REM Ausgabe der aktuellen KW
echo Wir sind in der %KW%. Kalenderwoche


REM Nummer des Berichts errechnen und richtigen Bericht öffnen
set /A Nummer=(KW+73)/2
echo Bericht: %Nummer%.docx
echo Fenster kann geschlossen werden oder wird geschlossen wenn der Bericht geschlossen wird.
chcp 850>nul
start winword.exe "G:\DATEN\Dez1\FD102\IuK\Azubis\"Mein Name"\Berichte\2020\%Nummer%.docx"
timeout /t 20
endlocal
exit

Und die Ausgabe mit der Fehlermeldung:

Heute ist der 08.05.2020
Ungültige Zahl. Numerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.
Wir sind in der 18. Kalenderwoche
Bericht: 45.docx
Fenster kann geschlossen werden oder wird geschlossen wenn der Bericht geschlossen wird.
Gewartet wird 17 Sekunden. Weiter mit beliebiger Taste...
Computer, Technik, Fehler, programmieren, bat, Batch, cmd, Technologie, Fehlermeldung, Schaltjahr, batch-trick

Meistgelesene Fragen zum Thema Bat