Code funktioniert nicht Bat?
Es funktioniert nun Vielen Dank!
@echo off
title TrexHack
:A
color 0c
echo ---------------------------------------------
echo _____ _ _ _
echo |_ _| __ _____ _| | | | __ _ ___| | __
echo | || '__/ _ \ \/ / |_| |/ _` |/ __| |/ /
echo | || | | __/> <| _ | (_| | (__| <
echo |_||_| \___/_/\_\_| |_|\__,_|\___|_|\_\
echo .
echo ---------------------------------------------
echo ::: Hack by TrexFlexx :::
echo ---------------------------------------------
color 0a
echo .
echo .
echo --------------
echo {1} HWID-Change
echo {2} DDos-Tool
echo {3} exit
echo --------------
set /p Eingabe="Eingabe: "
if %Eingabe%==1 (
pause >NUL
)
else if %Eingabe%==2 (
)
else if %Eingabe%==3 (
exit
)
pause >NUL
Also die cmd schließt sich nach ausführen der Datei
2 Antworten
Es funktioniert nun Vielen Dank!
naja... aber toll ineffizient
Da ist jemand über die Steuerzeichen von Batch gestolpert.
Batch ist nunmal keinen Sprache zum flexen, die wurde entwickelt um Adminaufgaben zu automatisieren. als die entwickelt wurd, konnte keienr Ahnen das Leute dmit Spaß haben wollen...
Daran liegt's:
In Batch haben die Zeichen |&<> ^ % " und bei delayedExpansion auch ! eine Steuerfunktion.
- Die Redirection-Symbole <> dienen zur Umleitung eines Textes aus/in Dateien
- Das Pipe-symbol | reicht die Ausgabe eiens Befehls an einen anderen Befehl weiter.
- & dient zum Aneinanderreihen mehrerer Befehle in einer Zeile
- ^ maskiert (escaped) obige Zeichen als Textzeichen
- %var% %%x und !var! kennzeichnen Variablen
obige können ohne spezielle Maßnahmen (maskieren) nicht mit Echo ausgegeben werden.
- " " kennzeichnet das was dazwischen steht als normalen String
Folgendes bringt eine Batch zum Absturz , weil diese Zeichen Unsinnige Aktionen auslösen (massiver Syntaxfehler)
echo | <> & blah und blub
">" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Die Lösungen sind in jedem Fall verzwickt:
Dies kann man verhindern indem man den Text in Quotes setzt.
echo " | <> & blah und blub"
...dann werden aber die "Quotes" mit ausgegeben.🤮
...oder man maskiert jedes dieser Zeichen einzeln:
echo ^| ^<^> ^& ^^ blah und blub
Bei einzelnen Zeichen hinundwieder ist das ok, aber... viel Spaß bei einem Textlogo 🥵
rem über einen for/f-Schleife in eien Laufvariable zu übergeben und diese im Schleifenrumpf an echo zu übergeben (Laufvariablen werden erst mit dem Befehl aufgelöst)
for /f "delims=" %%a in ("ich bin ein Text mit | <> & ^ %% blubb") do (echo %%a)
...ein Haufen Schreibkram für eine Zeile, aber diese Lösung habe ich nicht umsonst gebracht, denn diese Schleife kann auch aus Text Dateien lesen und die Batch ist auch nur eine Textdatei.
In der folgenden Batch habe ich einfach mehrere Logos mit ::::begin logoname.logo und ::::End.logo:::: markiert und an das Ende der Batch angehängt so kann eine kleine Subroutine (:DrawASCIILogo) die Logos am Ende der Datei finden und ausgeben. Im Hauptbereich der Batch wird das gesamte Logo mit eineem Befehl call :DrawASCIILogo "logoname.logo" abgerufen. Keine Einzelnen echo-aufrufe mehr schreiben (einfach Einfügen wie sie der Logogenerator) liefert.
Mehr Effizienz kann man nicht erwarten... und der Laufvariable sind die Sonderzeichen völlig egal.
@echo off
chcp 65001 >nul &rem Umlaute richtig anzeigen
rem rufe Subroutine auf , welche das Logo zeichent...
:menu
cls
call :DrawASCIILogo "Erzesel.Flower"
echo --------------
echo [G]otisch
echo [R]adioaktiv
echo [A]ufhören
echo --------------
rem statt set/p besser fur Menüs "choice" verwenden, damit kann der nutzer nur die definierten Buchstaben/Zahlen auswählen !!!
choice /c GRA
if %errorlevel% equ 1 (
echo:
call :DrawASCIILogo "Erzesel.Gotic"
rem darum darf auch kein nacktes & im echo stehen dahinter kommt ein Befehl...
echo mit beliebiger Taste zurück zum Menü & pause>nul
goto :menu
)
if %errorlevel% equ 2 (
call :wasAnderes
goto :menu
) else (
rem für die letzte Option muß kein if definiert werden
echo ...und Tschüß!!
timeout 3 >nul
exit /b
)
exit /b %=dises exit ist nur zur Sicherheit eigentlich springen alle Entscheidunen vorher weg=%
::hier ist der Hauptteil der Batch garrantiert zu Ende
:::::: subroutine/bn :::::
:wasAnderes
echo:
rem dreimal Beeb wärend die Batch weitermacht Missbrauch von choice damit du mal siehst wofür Steuerzeichen gut sind
start "" /b cmd /c "echo aaax|choice /c x>nul"
call :DrawASCIILogo "Radiation"
timeout 5 >nul
exit /b
:DrawASCIILogo
rem finde die Anfangszeile des Bildes in dieser Batch
set "toSkip="
set "beginMark=::::Begin %~1.logo"
set "endMark=::::End.logo::::"
for /f "skip=2 tokens=1 delims=[]" %%a in ('find /n "%beginMark%" "%~f0"') do (set "toSkip=%%a")
if not defined toSkip (
echo LogoMarker: "%beginMark%" nicht gefunden!
exit /b 1
)
for /f "usebackq skip=%toSkip% tokens=* delims=" %%t in ("%~f0") do (
if /i "%%~t"=="%endMark%" exit /b 0
echo %%t
)
exit /b
Das was hier kommt gehört Quasi nicht mehr zur Batch. Hinter ein "exit /b" kommt der Interpreter nich ohne ein Goto oder Call
::Logo(s) nach folgendem Muster kennzeichen:
::::Begin Erzesel.Flower.logo
.-''-. .-------. ____..--' .-''-. .-'''-. .-''-. .---.
.'_ _ \ | _ _ \ | | .'_ _ \ / _ \ .'_ _ \ | ,_|
/ ( ` ) '| ( ' ) | | .-' ' / ( ` ) ' (`' )/`--' / ( ` ) ',-./ )
. (_ o _) ||(_ o _) / |.-'.' /. (_ o _) |(_ o _). . (_ o _) |\ '_ '`)
| (_,_)___|| (_,_).' __ / _/ | (_,_)___| (_,_). '. | (_,_)___| > (_) )
' \ .---.| |\ \ | | .'._( )_ ' \ .---..---. \ :' \ .---.( . .-'
\ `-' /| | \ `' /.' (_'o._) \ `-' /\ `-' | \ `-' / `-'`-'|___
\ / | | \ / | (_,_)| \ / \ / \ / | \
`'-..-' ''-' `'-' |_________| `'-..-' `-...-' `'-..-' `--------`
::::End.logo::::
::::Begin Radiation.logo
[40;38;5;226m X XXXXXXXXXXXXX X
X XXXXXXXXXXX X
X XXXXXXXXX X
X XXXXXXX X
X XXXXX X
X XXX X
X X X
XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX
XXXXXXXXXXXXX XXXXXXXXXXXXX
XXXXXXXXXXX XXXXXXXXXXX
XXXXXXXXX XXXXXXXXX
XXXXXX XXXXXX
XXX XXX
X X
X[0m
::::End.logo::::
::::Begin Erzesel.Gotic.logo
,- _~, ,,
(' /| / ||
(( ||/= ,._-_ /\\ _-_ _-_, _-_ ||
(( || || / || \\ ||_. || \\ ||
( / | || /\\ ||/ ~ || ||/ ||
-____- \\, || \\,/ ,-_- \\,/ \\ ipsum dolor sit ametsed cupiditat,
/ consectetur adipisici elit,
in culpa qui (, officia usmod tempor incidunt ut labore et dolore magna.
Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquid ex ea commodi consequat.
Quis aute iure reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint obcaecat non proident,
sunt deserunt mollit anim id est laborum.
::::End.logo::::
wenn du richtig flexen willst , musst du schon etwas tiefer in die Kiste greifen....
https://www.gutefrage.net/home/thema/batch-trick/neue
oder so ein logo:

Versuch das Script mal in der Konsole zu starten, und schau dann was dir als Fehlermeldung rausgegeben wird.
Wahrscheinlich ist der Fehler hier:
else if %Eingabe%==2 (
)
Da es zwischen den Klammer leer ist.
Dann führ das script mal in cmd aus. Dann verhinderst du, dass sich das Fenster schließt
---------------------------------------------
_____ _ _ _
"|" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
also Wenn ich es richtige sehe, muss ich die große schrift oben entfernen da es "|" nicht war nehmen kann?
Vielen Dank dir :) Nun hat es endlich geklappt !
Nein, daran lag es nicht, ich habe gerade alles ab set /p Eingabe="Eingabe: " bis pause >NUL gelöscht und es ging trotzdem nicht...