Windows Batch - Überprüfen und Überschreiben von Files mit For-Funktionen
Hallo zusammen,
habe momentan das Problem, dass folgender Code nur mit dem Abschluss der for-Funktion nach dem ersten Markensprung (goto EXISTIERT) funktioniert, jedoch nicht mit der Einbeziehung von allen Marken um eine geschlossene Wiederholung von 44x zu erziehlen. Zudem wird nach dem ersten Durchlauf nicht von oben erneut begonnen:
Ich bin für jede Hilfe dankbar und bedanke mich vorab für jede Unterstützung!
LG,
Tranministrator
habe momentan das Problem, dass folgender Code nur mit dem Abschluss der for-Funktion nach dem ersten Markensprung (goto EXISTIERT) funktioniert, jedoch nicht mit der Einbeziehung von allen Marken um eine geschlossene Wiederholung von 44x zu erziehlen. Zudem wird nach dem ersten Durchlauf nicht von oben erneut begonnen:
@echo off
setlocal enabledelayedexpansion
set ziel=Z:\test.txt
…
set ziel[43]=Z:\test43.txt
set backup=Z:\test_.txt
…
set backup[43]=Z:\test43_.txt
for /L %%i in (0,1,43) do (
if exist !ziel[%%i]! goto EXISTIERT
:EXISTIERT_NICHT
echo Datei nicht gefunden!
copy !backup[%%i]! !ziel[%%i]!
goto ENDE
:EXISTIERT
echo Datei gefunden!
:SUCHE_DATATYPE
rem Stimmt die zweite Zeile überein?
set var="DATATYPE=MSQL"
for /f "skip=1 tokens=1 delims=" %%j in (!ziel[%%i]!) do (
if "%%j"==%var% (
echo Ok!
goto ENDE
)
if NOT "%%j"==%var% (
echo Fehlerhaft!
goto EXISTIERT_NICHT
)
)
:ENDE
pause
)
endlocal
Ich bin für jede Hilfe dankbar und bedanke mich vorab für jede Unterstützung!
LG,
Tranministrator
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 388586
Url: https://administrator.de/forum/windows-batch-ueberpruefen-und-ueberschreiben-von-files-mit-for-funktionen-388586.html
Ausgedruckt am: 23.12.2024 um 03:12 Uhr
2 Kommentare
Neuester Kommentar
Du wirst deinen Code wohl umstricken müssen. GOTO und Labels in einer Schleife geht nicht. In einer Subroutine aber schon.
Bsp.
GOTO erzeugt unlesbaren Spaghetticode. Du solltest es meiden wie die Pest.
Steffen
Bsp.
@echo off
for /l %%i in (0,1,43) do call :subroutine %%i
pause
exit /b
:subroutine
if %1 lss 20 (
echo %1 ist kleiner als 20
) else (
echo %1 ist groesser oder gleich 20
)
exit /b
GOTO erzeugt unlesbaren Spaghetticode. Du solltest es meiden wie die Pest.
Steffen