for Schleife vorzeitig beenden?
[Edit] Beitrag nach wochenlanger Stagnation geschlossen 13.11.2006 [/Edit Biber]
Hallo,
iich habe eine for Schleife die für jede Zeile in einer Datei einen Befehl ausführt.
Nun möchte ich aber gerne das nur die ersten 4 Zeilen verwendet werden bzw. die Schleife nach der 4. Zeile geschlossen wird.
for /f %%a IN (test.txt) DO (
befehl %%a
)
kann mir jemand helfen?
Danke.
Hallo,
iich habe eine for Schleife die für jede Zeile in einer Datei einen Befehl ausführt.
Nun möchte ich aber gerne das nur die ersten 4 Zeilen verwendet werden bzw. die Schleife nach der 4. Zeile geschlossen wird.
for /f %%a IN (test.txt) DO (
befehl %%a
)
kann mir jemand helfen?
Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42879
Url: https://administrator.de/contentid/42879
Ausgedruckt am: 20.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
Moin Multimania,
eine der Möglichkeiten wäre so.
Gruß
Biber
eine der Möglichkeiten wäre so.
::-ExitLoopDemo.bat
@echo off & setlocal & set /a "Ln=1000"
for /f "delims=" %%a IN (test.txt) DO call:Do4Times %%a
:Do4Times [Parameter1: eine Zeile aus Datei
set /a Ln+=1
if %Ln% GTR 1004 goto ExitLoop
Echo [%ln:~-3%] %*
goto :eof
:exitloop
:: ...ggf ...weitere Befehle
:: ....
Gruß
Biber
Na ja, Multimania,
dann würde ich die Strategie davon abhängig machen, ob in der Datei b.txt die ersten 4 von Zeilen oder die ersten 4 von 100000 Zeilen gelesen sollen.
Im ersten Fall (4 vom 10 Zeilen) würde die Sprungmarke dann schlicht "goto :eof", also verlasse den CALL-Block lauten. Oder aber in der äußeren Schleife die innere FOR-Anweisung nur aufrufen, wenn %Ln% kleiner 4.
Im zweiten Fall (nur die ersten 4 Zeilen eines riesigen Logfiles) würde ich entweder per Batch erstmal die ersten 4 Zeilen in eine Datei %temp%\c.txt kopieren und mit dieser weiterarbeiten.
Oder (dieselbe Mimik, aber professioneller) die ersten vier Zeilen mit einem head.exe/header.exe-Utility oder halt einem VBS-Schnipsel extrahieren.
Gruß
Biber
dann würde ich die Strategie davon abhängig machen, ob in der Datei b.txt die ersten 4 von Zeilen oder die ersten 4 von 100000 Zeilen gelesen sollen.
Im ersten Fall (4 vom 10 Zeilen) würde die Sprungmarke dann schlicht "goto :eof", also verlasse den CALL-Block lauten. Oder aber in der äußeren Schleife die innere FOR-Anweisung nur aufrufen, wenn %Ln% kleiner 4.
Im zweiten Fall (nur die ersten 4 Zeilen eines riesigen Logfiles) würde ich entweder per Batch erstmal die ersten 4 Zeilen in eine Datei %temp%\c.txt kopieren und mit dieser weiterarbeiten.
Oder (dieselbe Mimik, aber professioneller) die ersten vier Zeilen mit einem head.exe/header.exe-Utility oder halt einem VBS-Schnipsel extrahieren.
Gruß
Biber
::--------Fall A nochmal im ganzen Satz....
@echo off & setlocal & set /a "Ln=1000"
for /f "delims=" %%a IN (a.txt) DO (
for /f "delims=" %%b IN (b.txt) DO call:Do4Times "%%a" "%%b"
)
:Do4Times [Parameter1: eine Zeile aus Datei
set /a Ln+=1
if %Ln% GTR 1004 (
set /a "ln=1000" & goto :eof
)
Echo oder Befehl [%ln:~-3%] "%~1" "%~2"
REM Parameter 1 enthält %%a, also Zeile aus Datei a.txt;
REM Parameter 2 enthälz %%b, also eine Zeile aus b.txt
goto :eof
Gruß
Biber