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-Key: 83565

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

Printed on: April 24, 2024 at 23:04 o'clock

Member: BKAMk2
BKAMk2 Mar 20, 2008 at 09:01:33 (UTC)
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
Mitglied: 61319
61319 Mar 20, 2008 at 09:07:33 (UTC)
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
Member: paulepank
paulepank Mar 20, 2008 at 09:10:55 (UTC)
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
Member: sp00ner
sp00ner Mar 20, 2008 at 09:41:30 (UTC)
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%
Member: frank4work
frank4work Mar 20, 2008 at 10:04:35 (UTC)
Goto Top
Hallo zusammen,
Danke für die schnelle Hilfe - der Ansatz von paulepank funktioniert !
Gruß Frank
Member: miniversum
miniversum Mar 20, 2008 at 15:28:40 (UTC)
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.