If Else mit Verschachtelung
hallo
ich versuche gerade eine suche zu schreiben mit einigen IF leider bekomme ich immer nur ein Syntaxfehler und ich weis nicht vorher der kommt
kann mir da wer helfen
windows 10
windows 2012
sind die Systeme wo es laufen soll
ich versuche gerade eine suche zu schreiben mit einigen IF leider bekomme ich immer nur ein Syntaxfehler und ich weis nicht vorher der kommt
kann mir da wer helfen
windows 10
windows 2012
sind die Systeme wo es laufen soll
set sys=C:\Windows\System32\findstr.exe
set zahl=0
set username=%%1
FOR /F "tokens=1-7 delims=" %%A IN ('%sys% /r /C:".UserS%zahl%" c:\neur\userlog.txt') DO (
call set "Teffer=%%A" )
echo %Teffer%
pause
if "%username%" == "%Teffer%" (
GOTO geschaft
) else (
set /A zahl=%zahl%+1
GOTO noch-mal
if "%username%" == "%Teffer%"(
GOTO geschaft
) else (
set /A zahl=%zahl%+1
GOTO noch-mal
if "%FILENAME%%EXT%" == "%Teffer%"(
GOTO geschaft
) else (
set /A zahl=%zahl%+1
GOTO noch-mal
if "%username%" == "%Teffer%"(
GOTO geschaft
) else (
set /A zahl=%zahl%+1
GOTO noch-mal
if "%username%" == "%Teffer%"(
GOTO geschaft
) else (
set /A zahl=%zahl%+1
GOTO noch-mal
if "%username%" == "%Teffer%"(
GOTO geschaft
) else (
set /A zahl=%zahl%+1
GOTO noch-mal
if "%username%" == "%Teffer%"(
GOTO geschaft
) else (
set /A zahl=%zahl%+1
GOTO noch-mal
if "%username%" == "%Teffer%"(
GOTO geschaft
) else (
set /A zahl=%zahl%+1
GOTO noch-mal
if "%username%" == "%Teffer%"(
GOTO geschaft
) else (
GOTO ENDE
)))))))))
: geschaft
pause
: ENDE
echo nicht gefunden
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 290229
Url: https://administrator.de/contentid/290229
Ausgedruckt am: 24.11.2024 um 07:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo soritose.
1) Du setzt Leerzeichen, wo keine hingehören und umgekehrt. Z.Bsp.
Ist:
<code="plain">if "%username%" == "%Teffer%"(
Soll:
<code="plain">if "%username%"=="%Teffer%" (
Ist:
<code="plain">: ENDE
Soll:
<code="plain">:ENDE
2) Du schreibst schließende Klammern, für die keine öffnenden existieren (da sie vorher schon geschlossen wurden).
Ist:
<code="plain">)))))))))
Soll:
<code="plain">)
3) Du springst Marken an, die in deinem Code nicht existieren.
<code="plain">GOTO noch-mal
Grüße
rubberman
1) Du setzt Leerzeichen, wo keine hingehören und umgekehrt. Z.Bsp.
Ist:
<code="plain">if "%username%" == "%Teffer%"(
Soll:
<code="plain">if "%username%"=="%Teffer%" (
Ist:
<code="plain">: ENDE
Soll:
<code="plain">:ENDE
2) Du schreibst schließende Klammern, für die keine öffnenden existieren (da sie vorher schon geschlossen wurden).
Ist:
<code="plain">)))))))))
Soll:
<code="plain">)
3) Du springst Marken an, die in deinem Code nicht existieren.
<code="plain">GOTO noch-mal
Grüße
rubberman
Au möhr wie umständlich ist das denn ?!
8 mal die selbe IF-Abfrage ?? Das braucht's doch gar nicht wenn du nur bis zu einer bestimmten Nummer probieren willst ...
Gruß grexit
p.s. Zur Info: Wenn du verschachteln willst dann rücke deinen Code mit Tabs vernünftig ein dann siehst du gleich ob was an Klammern fehlt oder nicht...
p.s.2. Anstatt %username% solltest du eine andere Variable vergeben, denn %Username% ist schon durch eine Systemvariable mit dem aktuellen eingeloggten Benutzernamen belegt, wenn man diese also später bräuchte gäbs Probleme.
Wie wärs mal mit einem Batch-Kurs für Einsteiger in 20 Lektionen
8 mal die selbe IF-Abfrage ?? Das braucht's doch gar nicht wenn du nur bis zu einer bestimmten Nummer probieren willst ...
@echo off
set /a zahl=0
set "user=%~1"
:nochmal
set treffer=
FOR /F "delims=" %%a IN ('findstr /rc:".UserS%zahl%" "c:\neur\userlog.txt"') DO set "treffer=%%a"
if "%user%" NEQ "%treffer%" (
set /a zahl+=1
if %zahl% LEQ 8 (GOTO nochmal) else (goto ENDE)
)
echo Treffer!
pause
goto :eof
:ENDE
echo Nicht gefunden
pause
p.s. Zur Info: Wenn du verschachteln willst dann rücke deinen Code mit Tabs vernünftig ein dann siehst du gleich ob was an Klammern fehlt oder nicht...
p.s.2. Anstatt %username% solltest du eine andere Variable vergeben, denn %Username% ist schon durch eine Systemvariable mit dem aktuellen eingeloggten Benutzernamen belegt, wenn man diese also später bräuchte gäbs Probleme.
Wie wärs mal mit einem Batch-Kurs für Einsteiger in 20 Lektionen
habe es mal abgeändert
Nur die Hälfte. Was ist mit den überflüssigen Leerzeichen bei den Labels?und muss man nicht jede if schleife zu machen am ende da es ja 9 if sind müssen den nicht auch 9 ) sein am ende
Wegen fehlender Codeeinrückung ist das ganze bei dir ziemlich unleserlich. Kann schon sein.Grüße
rubberman