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:
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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 112931
Url: https://administrator.de/contentid/112931
Printed on: April 26, 2024 at 19:04 o'clock
17 Comments
Latest comment
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.
@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.
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:
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"