Verschachtelte For-Schleife gibt fälschlicherweise Dateinamen aus
Hallo Jungs!
Hab mal wieder ne kleine Frage:
Ich möchte das aus einer Datei PC Namen herrausgelesen werden. Jedoch enthält die Datei auch noch andere Einträge, und die Anzahl der PCs kann jedesmal variieren.
Die Datei sieht so aus:
config.ini
Der Batchscript zum auslesen so:
Das Problem ist, das ich hierbei folgende Ausgabe bekomme:
CONFIG.INI
Computer1
CONFIG.INI
Computer2
Warum bekomm den ini Namen mit als Ausgabe?
Hab mal wieder ne kleine Frage:
Ich möchte das aus einer Datei PC Namen herrausgelesen werden. Jedoch enthält die Datei auch noch andere Einträge, und die Anzahl der PCs kann jedesmal variieren.
Die Datei sieht so aus:
config.ini
;=============================
; NetSender Konfiguration
;=============================
[Optionen]
;Wird automatisch gesetzt wenn das Programm das erste mal gestartet wurde und die Einweisung bestätigt wird.
EinleitungGelesen=1
[Computerliste]
;Geben Sie hier die Ziel-PCs in folgender Form ein:
;1=Computer1
;2=Computer2
1=Computer1
2=Computer2
;Geben Sie hier die Anzahl der Computer an die sich in der Computerliste befinden
AnzahlPCs=2
[ENDE]
Der Batchscript zum auslesen so:
for /f "Tokens=2 Delims== " %%i in ('FIND "AnzahlPCs" Config.ini') do set pcanzahl=%%i
for /L %%i IN (1 1 %pcanzahl%) do for /f "Tokens=2 Delims== " %%a in ('FIND "%%i=" Config.ini') do echo %%a
Das Problem ist, das ich hierbei folgende Ausgabe bekomme:
CONFIG.INI
Computer1
CONFIG.INI
Computer2
Warum bekomm den ini Namen mit als Ausgabe?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 112101
Url: https://administrator.de/forum/verschachtelte-for-schleife-gibt-faelschlicherweise-dateinamen-aus-112101.html
Ausgedruckt am: 23.12.2024 um 01:12 Uhr
5 Kommentare
Neuester Kommentar
Hallo TheUntouchable,
wenn du bei deiner Lösung bleiben willst, dann entferne beim Delimiter das Leerzeichen.
Hintergrund: FIND gibt immer noch den Dateinamen mit aus.
cu paulepank
wenn du bei deiner Lösung bleiben willst, dann entferne beim Delimiter das Leerzeichen.
for /f "Tokens=2 Delims==" %%i in ('FIND "AnzahlPCs" Config.ini') do set pcanzahl=%%i
for /L %%i IN (1 1 %pcanzahl%) do for /f "Tokens=2 Delims==" %%a in ('FIND "%%i=" Config.ini') do echo %%a
Hintergrund: FIND gibt immer noch den Dateinamen mit aus.
cu paulepank
eine Anmerkung dazu hab ich noch:
wenn man eine bestimmte Zeichenkette in einer Zeile sucht, ist FINDSTR die bessere(richtige) Lösung.
Mit FIND suchst du nur Datei(en) die eine bestimmten Zeichenkette enthalten.
Da du ja bereits weißt, daß in der Config.ini die gesuchte Zeichenkette enthalten ist, reicht in der
1. FOR-Schleife auch ein ('TYPE Config.ini')
cu paulepank
wenn man eine bestimmte Zeichenkette in einer Zeile sucht, ist FINDSTR die bessere(richtige) Lösung.
Mit FIND suchst du nur Datei(en) die eine bestimmten Zeichenkette enthalten.
Da du ja bereits weißt, daß in der Config.ini die gesuchte Zeichenkette enthalten ist, reicht in der
1. FOR-Schleife auch ein ('TYPE Config.ini')
cu paulepank