Problem mit kombination aus IF ELSE und FOR Schleife.
Hallo,
An sich möchte ich ein Script schreiben was eine DFSR-Replikation prüfen soll.
Mit Batch Scripten habe ich leider keine Erfahrung…
Ich habe die eigentlichen Funktionen gegen ECHO’s ersetzt da nicht mal das Grundgerüst funktioniert…
Im CMD Fenster bekomme ich nur.
"(" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
An sich möchte ich ein Script schreiben was eine DFSR-Replikation prüfen soll.
Mit Batch Scripten habe ich leider keine Erfahrung…
Ich habe die eigentlichen Funktionen gegen ECHO’s ersetzt da nicht mal das Grundgerüst funktioniert…
Im CMD Fenster bekomme ich nur.
"(" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
@echo off
for %%f in (DC1,DC2) do for %%i in (DC1,DC2) do (
if not "%%f"=="%%i" (
echo Check BacklogFiles
set /P backlogfiles=
if not %backlogfiles%==0 (
echo %%f hat austehende Replikation mit dem %%i
echo Check BacklogFiles
set /P backlogfiles=
echo %backlogfiles% - Problem behoben.
if not %backlogfiles%==0 (
echo Replikation konnte nicht repariert werden.
) else (echo Replikation lauft wieder.)
)
)
)
exit /b
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 251148
Url: https://administrator.de/contentid/251148
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
12 Kommentare
Neuester Kommentar
Hey, zum einen immer daran denken, cmd ist ein Interpreter. Zum anderen ist Batch nicht Javascript, da kannst du nicht einfach mal was hinschreiben
Gruss, Endoro
:: lets go
@echo off &setlocal
for %%f in (DC1,DC2) do for %%i in (DC1,DC2) do (
if not "%%f"=="%%i" (
echo Check BacklogFiles
set /P backlogfiles=
if not "%backlogfiles%"=="0" (
echo %%f hat austehende Replikation mit dem %%i
echo Check BacklogFiles
set /P backlogfiles=
echo %backlogfiles% - Problem behoben.
if not "%backlogfiles%"=="0" (
echo Replikation konnte nicht repariert werden.
) else (
echo Replikation lauft wieder.
)
)
)
)
exit /b
Zitat von @bastla:
Dürfte ich ganz beiläufig noch das Stichwort "
Dürfte ich ganz beiläufig noch das Stichwort "
delayedExpansion
" ins Spiel bringen? Wie könnt ich das je vergessen
Ich hatte ja auf den Interpreter hingewiesen. Der interpretiert Zeile für Zeile. Wenn allerdings mehrere Programmzeilen mit einem Klammerpaar umschlossen werden, wie es bei Forschleifen oft passiert, wird der Code bei normaler Variablenerweiterung nur vor Eintritt in den geklammerten Codeblock interpretiert. Die einzigen Ausnahmen sind Laufzeitvariabe, weil den Microsoftpraktikanten Ende der 70'er aufgefallen ist, dass es sonst nicht funktioniert. Später haben sie dann erkannt, dass auch das noch unbefriedigend ist und haben die verzögerte Erweiterung erfunden, ohne die es heute nicht einmal mehr Liebhaber der Sprache gäbe. Die aber, wie wir es von Microsoft gewöhnt sind, dafür andere Probleme verursacht. Verzögert erweiterte Variable können innerhalb eines geklammerten Codeblocks "ausgelesen" werden, nachdem sich ihr Wert geändert hat. Ein kleines Beispiel:
@echo off &setlocal enabledelayedexpansion
set "variable=A"
for %%a in (7) do (
set "variable=B"
echo nicht verzögert erweitert: %variable%
echo verzögert erweitert: !variable!
)
Hey,
bitte lies dir meinen Beitrag durch.
Was meinst du, warum ich den mitternächtlich sonst geschrieben habe.
Gruss, Endoro
bitte lies dir meinen Beitrag durch.
Was meinst du, warum ich den mitternächtlich sonst geschrieben habe.
Gruss, Endoro