For Schleife nach der X. Ausführung einen anderen Befehl aufrufen
Hallo,
würde gerne eine Schleife 80 mal ausführen, bis dann ein ein weiterer Befehl erfolgt. Kann mir jemand eine Lösung sagen?
Hier mein Versuch, der allerdings nicht nach dem 80. Aufruf die Funktion batch2.bat sondern alle Dateien ausführt und dann die Schleife endlos wiederholt.
würde gerne eine Schleife 80 mal ausführen, bis dann ein ein weiterer Befehl erfolgt. Kann mir jemand eine Lösung sagen?
Hier mein Versuch, der allerdings nicht nach dem 80. Aufruf die Funktion batch2.bat sondern alle Dateien ausführt und dann die Schleife endlos wiederholt.
set numb=1
:start
FOR /F "tokens=1,2" %%i in ('type dateien.txt') do (
if %numb%==80 goto batch2
set /a numb +=1
IF NOT EXIST %%i curl -o %%i %%j )
:batch2
call batch2.bat
goto start
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 178597
Url: https://administrator.de/contentid/178597
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Aloha,
hmm soso er führt also kein
Ich würde wenn dann eher zu
greetz André
hmm soso er führt also kein
goto
aus einer Schleife heraus aus? Ja, sowas ... eventuell mal in unserem Tutorial zur FOR-Schleife vorbeischauen, die dir dann auch erklärt, dass das auch nicht realisierbar ist.Ich würde wenn dann eher zu
if %numb%==80 call batch2.bat && goto :eof
tendieren aber du willst wohl danach nochmal 80 Durchgänge oder wie oder was? du kannst natürlich auch deine Hauptschleife in eine for /L %%s in (1,1,80)
legen, jeder wie er's mag.greetz André
Hallo,
Warum ist dort ein goto start drin?
Gruß,
Peter
Warum ist dort ein goto start drin?
Gruß,
Peter
Zitat von @majcho:
Hier mein Versuch, der allerdings nicht nach dem 80. Aufruf die Funktion batch2.bat sondern alle Dateien ausführt und dann
die Schleife endlos wiederholt.
Hier mein Versuch, der allerdings nicht nach dem 80. Aufruf die Funktion batch2.bat sondern alle Dateien ausführt und dann
die Schleife endlos wiederholt.
Hallo majcho,
hast Du Dir die Ausgabe Deines Codes mal angesehen?
Warum endet die Schleife nicht nach Versuch 80?
Das Problem ist imho nicht das der goto in der For-Schleife nicht funktioniert, sondern dass Du immer "1" mit "80" vergleichst, da auf die Variable "numb" erst nach Beendigung der For-Schleife mit neuem Inhalt zugegriffen werden kann. Du kannst das umgehen, in dem Du "SETLOCAL EnableDelayedExpansion" verwendest und die Variable in der For-Schleife mit "!numb!" ansprichst. Details dazu stehen bestimmt in einem der guten Batch Tutorials.
Aber ich gebe Skyemugen recht, dass ich hier auch kein goto verwenden würde.
Warum wird die Schleife endlos wiederholt?
goto start
Gruß icsAT
Nun verarbeitest Du die Datei "dateien.txt" 80 mal und zwar vollständig ;-( Vor jedem vollständigen Verarbeiten wird batch2 aufgerufen.
Da es nun eine neue Anforderung gibt:
Gruß icsAT
Da es nun eine neue Anforderung gibt:
Zitat von @majcho:
die dateien.txt umfasst 2400 Dateien, nach jeder 80. Ausführung soll batch2.bat aufgerufen
werden.
Das "...nach jeder..." war bisher bei mir nicht angekommen, daher würde ich Deinen Ursprungsansatz weiter verfolgen:die dateien.txt umfasst 2400 Dateien, nach jeder 80. Ausführung soll batch2.bat aufgerufen
werden.
SETLOCAL EnableDelayedExpansion
set numb=0
FOR /F "tokens=1,2" %%i in (dateien.txt) do (
set /a numb +=1
if "!numb!"=="80" (
set numb=0
call batch2.bat
)
if not exist %%i curl -o %%i %%j
)
ENDLOCAL
goto :eof
Gruß icsAT