frank4work
Goto Top

Anzahl der Durchläufe einer For Schleife zählen

Hallo zusammen,

ich hab da ein "kleines" Problem =>

innerhalb einer batch Datei werden diverse Dateien (mehr als 40000 - laufend mehr bzw weniger) innerhalb einer Verzeichnisstruktur mit einem Programm auf "Integrität" überprüft

Hier die entsprechende Zeile =>

for /R %team% %%a in (*.prt) do @idfvfy.exe -v %%a >> %ziel_log%\%xdatum%_%name_log_file%

das Ergebnis der Prüfung wird in eine log-Datei geschrieben - funktioniert gut - nur hätten wir gerne am Ende gewußt wie oft die Schleife durchlaufen wurde.

Vielleicht hat ja jemand von Euch eine Idee - Danke im voraus

Gruß

Frank

Content-ID: 83565

Url: https://administrator.de/forum/anzahl-der-durchlaeufe-einer-for-schleife-zaehlen-83565.html

Ausgedruckt am: 23.12.2024 um 19:12 Uhr

BKAMk2
BKAMk2 20.03.2008 um 10:01:33 Uhr
Goto Top
Morgen Frank,

ihr könntet eine zusätzliche Variable anlegen, die den Wert "1" hat.
Nach jedem durchlauf der for-Schleife wird dann der Wert um 1 erhöht.

Wie das genau geht kann ich dir nicht sagen, aber hier im Forum dürfte das irgendwo stehen.
Such einfach mal nach Zählschleife face-wink
61319
61319 20.03.2008 um 10:07:33 Uhr
Goto Top
Hi Frank,

das geht nicht so einfach in der gleichen for-Schleife, da die nur sich selbst abarbeitet und nicht wie in einem batch noch andere Variablen hochzählt.
Du könntest den Aufruf der idfvfy.exe also in einen batch schreiben und da auch hochzählen lassen, da immer der gesammte batch arbgearbeitet wird.

Oder, was sehr einfach wäre: Zähl doch einfach die Einträge in Deiner LOG-Datei face-wink

Gruß Niko
paulepank
paulepank 20.03.2008 um 10:10:55 Uhr
Goto Top
Hallo Frank,

eine mögliche Lösung:


set /a sum=0
for /R %team% %%a in (*.prt) do @idfvfy.exe -v %%a >> %ziel_log%\%xdatum%_%name_log_file% & @set /a sum=sum+1 >nul
echo %sum%

cu paulepank
sp00ner
sp00ner 20.03.2008 um 10:41:30 Uhr
Goto Top
morgen, so kanns gehen:

set zaehler = 0

for /R %team% %%a in (*.prt) do (

@idfvfy.exe -v %%a >> %ziel_log%\%xdatum%_%name_log_file%

set /a zaehler += 1

)

echo Schleife wurde %zaehler% -mal durchlaufen .>> %ziel_log%\%xdatum%_%name_log_file%
frank4work
frank4work 20.03.2008 um 11:04:35 Uhr
Goto Top
Hallo zusammen,
Danke für die schnelle Hilfe - der Ansatz von paulepank funktioniert !
Gruß Frank
miniversum
miniversum 20.03.2008 um 16:28:40 Uhr
Goto Top
Doch sowas funktioniert auch:
set zaehler = 0

for /R %team% %%a in (*.prt) do (

@idfvfy.exe -v %%a >> %ziel_log%\%xdatum%_%name_log_file%

set /a zaehler += 1

)

echo Schleife wurde %zaehler% -mal durchlaufen .>> %ziel_log%\%xdatum%_%name_log_file%

Es stimmt zwar das Variabeln einmal vor der Klammer aufgelöst werden und dann so bleiben (wenn man kein delayed expansion benutzt) aber beim set gehts. Zuweisungen mit set funktionieren. Nur das Anzeigen der Variable in der Schleife mit %zaehler% würde den Wert vor der Klammer bringen (also 0) Nach der Klammer wird aber die Variable vorm echo befehl neu aufgelöst und dann steht der richtige Wert drin.