gabrixl
Goto Top

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%
)
)
)

Content-Key: 329597

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

Printed on: April 24, 2024 at 19:04 o'clock

Member: MrCount
MrCount Feb 16, 2017 at 08:08:12 (UTC)
Goto Top
Servus,

versuche es mal mit "%variable%" == "abcdef"

...
if "%ex_username%" == "root" (  
...
if "%rootpw%" == "jdk_L539v4dot1" (  
... etc.
Member: gabrixl
gabrixl Feb 16, 2017 at 08:21:15 (UTC)
Goto Top
Immer noch der selbe Fehler, aber danke.
Member: MrCount
MrCount Feb 16, 2017 at 08:52:26 (UTC)
Goto Top
Na dann setze dir mal Pausen, damit man den Punkt des Abbruchs leichter findet.

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
Member: gabrixl
gabrixl Feb 16, 2017 at 09:08:11 (UTC)
Goto Top
Nunja, bei Zeile 15 erscheint ein leeres Fenster und solange man nicht "!user~'list,/a" eintippt kann man als root nichts machen. Es soll eine Art Passworteingabe ohne Aufforderung sein.. Hab mal mit pausen durch gecheckt, ist aber bei Zeile 4 bereits abgebrochen.
Member: em-pie
em-pie Feb 16, 2017 updated at 09:16:44 (UTC)
Goto Top
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:
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
Member: MrCount
MrCount Feb 16, 2017 at 09:11:51 (UTC)
Goto Top
Nimm mal meinen Code aus dem letzten Posting...
Member: gabrixl
gabrixl Feb 16, 2017 at 09:15:59 (UTC)
Goto Top
Danke auch dir für deine Hilfe
Member: gabrixl
gabrixl Feb 16, 2017 at 09:58:07 (UTC)
Goto Top
Wusste nicht das, dass mit IF im IF nicht Funktioniert
Member: em-pie
em-pie Feb 16, 2017 at 10:04:45 (UTC)
Goto Top
Geht doch, siehe Mr.Counts letzten Code (habe des des eigenen Wissens wegen mal getestet).

Das scheint nur nicht zu funktionieren, wenn man die Variablen mit % "ansprechen" möchte.
Er verwendet hier die ! (was mir neu gewesen ist) und dann klappt auch eine verschachtelte IF-Abfrage...
Member: gabrixl
gabrixl Feb 16, 2017 at 10:10:22 (UTC)
Goto Top
achso alles klar, danke für die Aufklärung
Member: MrCount
MrCount Feb 16, 2017 updated at 12:55:11 (UTC)
Goto Top