maxappemann
Goto Top

Syntaktischer Fehler im Batch File das die Farben von CMD ändern soll

Hallo liebe Community wir haben hier ein kleines Problem.

Wir versuchen mit einem Batch File statt color 0A schreiben zu müssen schwarz grün eingeben zu können, das funktioniert auch soweit doch jetzt soll, wenn jemand nur einen Parameter eingibt eine Fehlermeldung kommen :Error! (wenn man 2 parameter eingibt z.B. s s funktioniert die Error Meldung, wenn man aber nur einen wie z.B. s eingibt kommt stattdessen aber "(" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Wir sind mit googeln am ende und bitten daher um euren weisen Rat :D Danke im Voraus LG

(Hier der "Code")

@echo off
if %1 == help (
	if %2 == /CC3 (
		echo Die erste Farbe die Sie sich aussuchen ist fuer den Hintergrund
		echo und die zweite Farbe fuer die Schriftfarbe.
		echo Bitte achten Sie auf die Rechtschreibung!
		echo schwarz
		echo weiss
		echo rot
		echo gruen
	)
)
if %1 == schwarz (
	set H=0
)
if %1 == weiss (
	set H=F
)
if %1 == rot (
	set H=4
)
if %1 == gruen (
	set H=A
)
if not errorlevel 0 (
	goto :end
)
if %2 == schwarz (
	set S=0
)
if %2 == weiss (
	set S=F
)
if %2 == rot (
	set S=4
)
if %2 == gruen (
	set S=A
)
if not errorlevel 0 (
	goto :end
)
color %H%%S%

:end
echo Error!

[Edit Biber] Codeformatierung und verschoben von 'Windows 8' nach 'Batch & Shell' [/Edit]

Content-Key: 283766

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

Printed on: April 26, 2024 at 21:04 o'clock

Member: bastla
bastla Sep 24, 2015 at 18:51:50 (UTC)
Goto Top
Hallo maxappemann und willkommen im Forum!

Sollte der "Gelöst"-Status Deiner Frage ernst gemeint sein, kannst Du natürlich meinen Vorschlag gerne ignorieren - ansonsten etwa so:
@echo off & setlocal
if /i %1 == help (
    echo Die erste Farbe die Sie sich aussuchen ist fuer den Hintergrund
    echo und die zweite Farbe fuer die Schriftfarbe.
    echo Bitte achten Sie auf die Rechtschreibung!
    echo schwarz
    echo weiss
    echo rot
    echo gruen
    goto :eof
)

if "%~2"=="" (  
    echo Bitte zwei Farben angeben!
    goto :eof
)

::zur Sicherheit Variablen loeschen
set "H="  
set "S="  

if %1 == schwarz (
    set H=0
)
if %1 == weiss (
    set H=F
)
if %1 == rot (
    set H=4
)
if %1 == gruen (
    set H=A
)
if %2 == schwarz (
    set S=0
)
if %2 == weiss (
    set S=F
)
if %2 == rot (
    set S=4
)
if %2 == gruen (
    set S=A
)
::Farben nur aendern, wenn beide Farben erkannt wurden und nicht gleich sind
if defined H if defined S if "%H%" neq "%S%" color %H%%S%  
Grüße
bastla
Member: Maxappemann
Maxappemann Sep 25, 2015 updated at 12:15:58 (UTC)
Goto Top
Ja war ernst gemeint aber danke das du dir trotzdem mühe gegeben hast bastla :D
Wir haben es übrigens so gelöst

@echo off
set para2=%2
if %1 == help (
	echo Die erste Farbe die Sie sich aussuchen ist fuer den Hintergrund
	echo und die zweite Farbe fuer die Schriftfarbe.
	echo Bitte achten Sie auf die Rechtschreibung!
	echo schwarz
	echo weiss
	echo rot
	echo gruen
	goto :help
)
if %1 == schwarz (
	set H=0
)
if %1 == weiss (
	set H=F
)
if %1 == rot (
	set H=4
)
if %1 == gruen (
	set H=A
)
If NOT DEFINED para2 (
	goto :error
)
if %para2% == schwarz (
	set S=0
	goto :color
)
if %para2% == weiss (
	set S=F
	goto :color
)
if %para2% == rot (
	set S=4
	goto :color
)
if %para2% == gruen (
	set S=A
	goto :color
)
:error
echo Error!

:color
color %H%%S%

:help
echo.