Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

for Schleife vorzeitig beenden?

Frage Entwicklung Batch & Shell

Mitglied: Multimania

Multimania (Level 1) - Jetzt verbinden

24.10.2006, aktualisiert 13:38 Uhr, 9579 Aufrufe, 5 Kommentare

[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.
Mitglied: Biber
24.10.2006 um 11:26 Uhr
Moin Multimania,

eine der Möglichkeiten wäre so.
01.
::-ExitLoopDemo.bat 
02.
@echo off & setlocal & set /a "Ln=1000" 
03.
for /f "delims=" %%a IN (test.txt) DO call:Do4Times %%a 
04.
:Do4Times [Parameter1: eine Zeile aus Datei 
05.
set /a Ln+=1 
06.
if %Ln% GTR 1004 goto ExitLoop 
07.
Echo [%ln:~-3%] %* 
08.
goto :eof 
09.
:exitloop 
10.
:: ...ggf ...weitere Befehle 
11.
:: ....
Gruß
Biber
Bitte warten ..
Mitglied: Multimania
24.10.2006 um 12:45 Uhr
Hallo,

danke für die schnelle Antwort, ich habe es probiert aber ich habe scheinbar vergessen zu sagen das die for Schleife bereits in einer for Schleife steckt und das dann mit der Sprungmarke nicht funktioniert.

hier etwas mehr Quelltext.

for /f %%a IN (a.txt) DO (
for /f %%b IN (b.txt) DO (
befehl %%a %%b
)
)


Danke.
Bitte warten ..
Mitglied: Biber
24.10.2006 um 13:15 Uhr
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
Bitte warten ..
Mitglied: Multimania
24.10.2006 um 13:21 Uhr
deinem ersten Fall kann ich leider nicht fogen

Fall 2 verstehe ich, bin noch auf der suche ...
Bitte warten ..
Mitglied: Biber
24.10.2006 um 13:38 Uhr
01.
::--------Fall A nochmal im ganzen Satz.... 
02.
@echo off & setlocal & set /a "Ln=1000" 
03.
for /f "delims=" %%a IN (a.txt) DO ( 
04.
   for /f "delims=" %%b IN (b.txt) DO call:Do4Times "%%a" "%%b" 
05.
06.
 
07.
:Do4Times [Parameter1: eine Zeile aus Datei 
08.
set /a Ln+=1 
09.
if %Ln% GTR 1004 ( 
10.
     set /a "ln=1000"  & goto :eof 
11.
12.
Echo oder Befehl [%ln:~-3%] "%~1" "%~2" 
13.
REM Parameter 1 enthält %%a, also Zeile aus Datei a.txt;  
14.
REM Parameter 2 enthälz %%b, also eine Zeile aus b.txt 
15.
goto :eof
Gruß
Biber
Bitte warten ..
Neuester Wissensbeitrag
Router & Routing

192.168er Adresse im öffentlichen Netz

(2)

Erfahrungsbericht von visco-c zum Thema Router & Routing ...

Ähnliche Inhalte
Batch & Shell
Zwei Ergänzungen in einer For Schleife

Frage von charmeur zum Thema Batch & Shell ...

Windows 7
Wie kann ich das beenden eines Prozesses Protokollieren? (7)

Frage von Scroller zum Thema Windows 7 ...

Batch & Shell
gelöst FOR Schleife mit Unterverzeichnissen, die Ausgabe kürzen (tokens evtl.) (5)

Frage von Kriegstreiber zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (29)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (22)

Frage von Driphex zum Thema Exchange Server ...

Hyper-V
HYPER V und USB (16)

Frage von Hendrik2586 zum Thema Hyper-V ...

SAN, NAS, DAS
Backupserver für KMU (14)

Frage von Leo-le zum Thema SAN, NAS, DAS ...