Wo ist der Fehler in diesem Batch Skript?
Hallo com, ich finde den Fehler im folgenden (Teil)-Skript nicht und bin am verzweifeln. CMD meldet: "(" kann sntaktisch an dieser Stelle nicht verarbeitet werden.
set /p ex_username="Personal username: "
if %ex_username% == root (
cls
set /p rootpw="> "
if %rootpw% == "jdk_L539v4dot1" (
timout /t 2 > NUL
cls
set /p userlist="> "
if %userlist% == "!user~'list,/a" (
cd users
For /F %%i in ('dir /B') do set userlist=%%~ni
echo %userlist%
)
)
)
set /p ex_username="Personal username: "
if %ex_username% == root (
cls
set /p rootpw="> "
if %rootpw% == "jdk_L539v4dot1" (
timout /t 2 > NUL
cls
set /p userlist="> "
if %userlist% == "!user~'list,/a" (
cd users
For /F %%i in ('dir /B') do set userlist=%%~ni
echo %userlist%
)
)
)
Please also mark the comments that contributed to the solution of the article
Content-Key: 329597
Url: https://administrator.de/contentid/329597
Printed on: April 24, 2024 at 19:04 o'clock
11 Comments
Latest comment
Na dann setze dir mal Pausen, damit man den Punkt des Abbruchs leichter findet.
Was soll in Zeile 15 passieren?
Was soll in Zeile 15 passieren?
@echo off
Setlocal EnableDelayedExpansion
set /p ex_username="Personal username: "
if "%ex_username%" == "root" (
cls
set /p rootpw="> "
echo !rootpw!
if "!rootpw!" == "abc" (
echo pw okay
timout /t 2 > NUL
cls
set /p userlist="> "
echo !userlist!
if "!userlist!" == "!user~'list,/a" (
cd users
For /F %%i in ('dir /B') do set userlist=%%~ni
echo !userlist!
)
)
)
pause
Moin,
Habe das gerade einmal nachgestellt.
Das Problem scheint zu sein, dass MS-DOS nicht mit If-Schleifen in IF-Schleifen klarkommt.
Der springt ja erst gar nicht in die erste Schleife rein.
Das ist mir beim editieren mit Notepad++ und dem Highlithing aufgefallen.
Die erste geöffnete Klammer wurde mit der ersten geschlossenen Klammer "bedient"..
mach es einfach wie folgt:
Gruß
em-pie
Habe das gerade einmal nachgestellt.
Das Problem scheint zu sein, dass MS-DOS nicht mit If-Schleifen in IF-Schleifen klarkommt.
Der springt ja erst gar nicht in die erste Schleife rein.
Das ist mir beim editieren mit Notepad++ und dem Highlithing aufgefallen.
Die erste geöffnete Klammer wurde mit der ersten geschlossenen Klammer "bedient"..
mach es einfach wie folgt:
set /p ex_username="Personal username: "
IF "%ex_username%" == "root" (
cls
set /p rootpw="x "
) ELSE (
goto ENDE
)
if "%rootpw%" == "jdk_L539v4dot1" (
timout /t 2 > NUL
cls
set /p userlist="> "
) ELSE (
goto ENDE
)
if "%userlist%" == "!user~'list,/a" (
cd users
For /F %%i in ('dir /B') do set userlist=%%~ni
echo %userlist%
) ELSE (
goto ENDE
)
:ENDE
Pause
Gruß
em-pie
Und?
Funktioniert es bei dir?
vlt. Hilfreich: Batch Anfänger Fragen zu setlocal, enabledelayedexpansion, set, for
Funktioniert es bei dir?
vlt. Hilfreich: Batch Anfänger Fragen zu setlocal, enabledelayedexpansion, set, for