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-Key: 290229

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

Printed on: April 25, 2024 at 07:04 o'clock

Member: rubberman
rubberman Dec 06, 2015 updated at 15:24:09 (UTC)
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
Member: soritose
soritose Dec 06, 2015 at 16:21:14 (UTC)
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
Mitglied: 122990
122990 Dec 06, 2015 updated at 17:04:22 (UTC)
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
Member: rubberman
rubberman Dec 06, 2015 at 17:11:08 (UTC)
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
Member: soritose
soritose Dec 06, 2015 at 18:18:11 (UTC)
Goto Top
danke dir grexit das hat mir weiter geholfen