soritose
Goto Top

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


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

Content-ID: 290229

Url: https://administrator.de/contentid/290229

Ausgedruckt am: 24.11.2024 um 07:11 Uhr

rubberman
rubberman 06.12.2015 aktualisiert um 16:24:09 Uhr
Goto Top
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
soritose
soritose 06.12.2015 um 17:21:14 Uhr
Goto Top
sorry da fehlte 1 ziele

habe es mal abgeändert aber mit deiner Änderung passiert Garnichts außer das der Syntaxfehler weg ist.
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

set sys=C:\Windows\System32\findstr.exe 
set zahl=0 
set username=%%1 
 
:noch-mal 
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 "%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 ( 
set /A zahl=%zahl%+1 
GOTO noch-mal 

if "%username%"=="%Teffer%" (  
GOTO geschaft 
) else ( 
GOTO ENDE 
) 
 
: geschaft 
pause 
 
 
 
: ENDE 
echo nicht gefunden 
pause
122990
122990 06.12.2015 aktualisiert um 18:04:22 Uhr
Goto Top
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 ...
@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
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
rubberman
rubberman 06.12.2015 um 18:11:08 Uhr
Goto Top
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
soritose
soritose 06.12.2015 um 19:18:11 Uhr
Goto Top
danke dir grexit das hat mir weiter geholfen