Durchlaufzähler in for-Schleife
Hallo,
ich möchte eine for-Schleife basteln, welche mir den aktuellen Durchlauf angeben kann, damit folgendes Format erreicht werden kann:
print 'Change 1'
--:r ".\BI_OIVERFICATION_REP_CREATE.sql"
print 'Change 2'
--:r ".\BI_OIVERFICATION_REP_CSVARCRRC_GENERATE.sql"
print 'Change 3'
--:r ".\BI_OIVERFICATION_REP_CSV_GENERATE.sql"
Wie man sieht wird der aktuelle Durchlauf für Change 1-3 benötigt (unbekannt viele durchläufe möglich).
ich habe ja gehofft, dass es im folgenden Format irgendwie möglich wäre aber es hat nicht gefunzt:
Wie könnte ich das besser umsetzen?
ich möchte eine for-Schleife basteln, welche mir den aktuellen Durchlauf angeben kann, damit folgendes Format erreicht werden kann:
print 'Change 1'
--:r ".\BI_OIVERFICATION_REP_CREATE.sql"
print 'Change 2'
--:r ".\BI_OIVERFICATION_REP_CSVARCRRC_GENERATE.sql"
print 'Change 3'
--:r ".\BI_OIVERFICATION_REP_CSV_GENERATE.sql"
Wie man sieht wird der aktuelle Durchlauf für Change 1-3 benötigt (unbekannt viele durchläufe möglich).
ich habe ja gehofft, dass es im folgenden Format irgendwie möglich wäre aber es hat nicht gefunzt:
1
2
3
4
5
2
3
4
5
set anzahl=0
for /F "skip=1 tokens=1* delims=\" %%i IN (%DIFFTOOL_PATH%\neu.txt) DO (
set anzahl=+1
echo %anzahl%
)
Wie könnte ich das besser umsetzen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 112931
Url: https://administrator.de/forum/durchlaufzaehler-in-for-schleife-112931.html
Ausgedruckt am: 10.04.2025 um 21:04 Uhr
17 Kommentare
Neuester Kommentar
Naja wie wärs mit sowas hier:
das problem das du hier natürlich hast, ist wenn in einem Dateinamen ein & oder ein Leerzeichen vorkommt stolpert das teil,
weil bei der Übergabe an count das %%i nicht unter "" steht und dadurch die Leerzeichen und & nicht richtig übergeben werden.
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
@echo off
set anz=0
for /F %%i in ('dir /b') do call :count %%i
pause
goto :EOF
:count
set /a anz=%anz%+1
echo print 'Change %anz%'
echo --:r".\%*"
goto :EOF
das problem das du hier natürlich hast, ist wenn in einem Dateinamen ein & oder ein Leerzeichen vorkommt stolpert das teil,
weil bei der Übergabe an count das %%i nicht unter "" steht und dadurch die Leerzeichen und & nicht richtig übergeben werden.
Also mit diesem code erhalte ich keine endlosschleife.
Das was du evtl. für eine Endlosschleife haltest wird einfach dementsprechend lange dauern.
Das was du evtl. für eine Endlosschleife haltest wird einfach dementsprechend lange dauern.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
set anz=0
set HELP_PATH="foob"
for /F "skip=1 tokens=1* delims=\" %%i in (veraendert.txt) do call :count %%j
goto :weiter
:weiter
set anz=0
for /F "skip=3 tokens=1* delims=\" %%i in (neu.txt) do call :zaehl %%j
goto :EOF
:count
set /a anz=%anz%+1
echo print 'Change %anz%' >> %HELP_PATH%\install_backend.sql
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql
goto :weiter
:zaehl
set /a anz=%anz%+1
echo print 'New %anz%' >> %HELP_PATH%\install_backend.sql
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql
goto :EOF
Verdammt ich habs ja gewusst da war noch ein Fehler:
Folgendes: und zwar in der Zeile 12 darf nciht goto:weiter stehen sondern da muss goto :EOF stehen.
Dann bekommst sowas raus:
Folgendes: und zwar in der Zeile 12 darf nciht goto:weiter stehen sondern da muss goto :EOF stehen.
Dann bekommst sowas raus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
print 'Change 1'
--:r".\ACMConvertDate.sql"
print 'Change 2'
--:r".\BfxFctMasterGetOption.sql"
print 'Change 3'
--:r".\zZz.txt"
print 'Change 4'
--:r".\UTIL_getDatePart.sql"
print 'Change 5'
--:r".\UTIL_getFilename.sql"
print 'Change 6'
--:r".\UTIL_getErrorInfo.sql"
print 'New 1'
--:r".\BI_EPM_IMPORT_ERRORS.sql"
print 'New 2'
--:r".\BI_EPM_SAP_IMPORT.sql"
print 'New 3'
--:r".\BI_ERP_GET_SINGLE_FILENAME.sql"
print 'New 4'
--:r".\BI_STAMMDATEN_PROJECTS_IMPORT.sql"