tkline
Goto Top

For Schleife unterbrechen und wieder starten.

Hi Leute, hab mal wieder eine tricky Aufgabe für euch,

Hab folgendes Batchfile geschrieben:
for /f "tokens=1,2 delims=/ " %%A in (datei.dat) do (App1 -u=test -p=test1 -g=ads -Jahre=%%A -Alter=%%B -Check=All -debug > %%A_%%B_Summe.txt)  

Erläuterung:
Damit lasse ich diverse Einträge aus der Datei "datei.dat" auslesen und starte ein Programm App1.
So weit so gut. Ich möchte nun dieses Skript nach ca. 20 Durchläufen unterbrechen, um
ein anderes batchfile (batch2.bat) auszuführen. Sobald batch2 ausgeführt ist, soll das script
dann wieder weiterlaufen. Nach weiteren 20mal soll das ganze dann wiederholt werden...usw.

Die Batch2.bat kann auch parallel aufgerufen werden, das erste batchfile muss nicht unbedingt unterbrochen werden.
Allerdings soll Batch2 erst dann aufgerufen werden, wenn das obere Skript 20 mal durchlaufen wurde.

Habt ihr eine Idee?
Wär super


Grüße
Tom

Content-ID: 87593

Url: https://administrator.de/contentid/87593

Ausgedruckt am: 23.11.2024 um 05:11 Uhr

sp00ner
sp00ner 14.05.2008 um 17:29:54 Uhr
Goto Top
Hi,

kenn mich mit Batch-Programmierung nicht so gut aus, das Verfahren dass du beschreibst, hört sich aber nach der modulo-Operation an.

zaehler i = 0

for(;;){

i = i + 1

if ( i % 20 == 0){
starte batch2
}

}

modulo gibt den restwert zurück, also ist i % 20 = 0 erfüllt, wenn i gleich 20, 40 usw. ist

hoffe das hilft dir und du kannst modulo in batch überhaupt verwenden
bastla
bastla 14.05.2008 um 17:34:44 Uhr
Goto Top
Hallo tkline!

Ungetestet etwa so:
@echo off & setlocal
set /a Zeile=0
for /f "tokens=1,2 delims=/ " %%A in (datei.dat) do call :ProcessLine "%%A" "%%B"  
goto :eof

:ProcessLine
App1 -u=test -p=test1 -g=ads -Jahre=%~1 -Alter=%~2 -Check=All -debug > %~1_%~2_Summe.txt
set /a Zeile+=1
if %Zeile% lss 20 goto :eof
set /a Zeile=0
call batch2.bat
goto :eof

Grüße
bastla
Biber
Biber 14.05.2008 um 19:35:46 Uhr
Goto Top
Moin alle,

wobei mir nur als Fussnote zu sagen bleibt, dass es sinnvoll sein könnte, wenn der Batch2 mindestens einmal läuft,
auch wenn es nur insgesamt 19 Dateien sind oder eben 99.
Denn in diesen Fällen würden die letzten 19 Dateien ja nie den Genuss kommen, von Batch2 nachbehandelt zu werden.
Ich würde also vor dem ersten "goto :eof" noch eine Zeile einfügen:
IF %Zeile% GTR 0 call Batch2.bat
[Vorteil: Dann kannst Du auch das Testen der Funktionalität mit nur 3 Testdateien oder weniger machen...face-wink]

Grüße
Biber
tkline
tkline 15.05.2008 um 10:36:54 Uhr
Goto Top
Perfekt.
Hat einwandfrei funktioniert.

Was wär ich ohne euch...
Fettes Merci!

Greets
TOM