Batch skript schließt automatisch, wieso?
Hey Leute!
Ich bin neu was Skripte schreiben im generellen angeht. Bei StackOverflow hab ich ein Skript gefunden was Text quasi so anzeigen soll als würde man in gerade tippen. Doch nachdem der Text fertig "geschrieben" wurde, wird das Skript automatisch geschlossen, was es aber nicht soll.
Hier das Skript:
@Echo Off
Set "STRING=Beispiel"
For /F %%A In ('"Prompt $H&For %%B In (1) Do Rem"') Do Set "BS=%%A"
For /F Delims^=^ EOL^= %%A In ('"(CMD/U/CEcho=%STRING%)|Find /V """'
) Do Set/P "=a%BS%%%A"<Nul & PathPing 127.0.0.1 -n -q 1 -p 100 1>Nul
(https://stackoverflow.com/a/54269892/19115182)
Kann mir jemand helfen? Ich freue mich auf antworten! LG
2 Antworten
schon mal mit pause am Ende versucht?
@echo off
for /f "delims=;" %%a in ('"echo prompt $H;|cmd /k"') do set "BS=%%a"
set "string=; hallo huhu Beispiel Blubb Blubb Blubb"
for /f delims^=^ eol^= %%a in ('"cmd /u /c echo:%string%|find /v """') do (
<nul set/p "=.%BS%%%a"
pathping localhost -q 1 -p 100 >nul
)
echo:
pause
Ich habe mir mal erlaubt den Code etwas übersichtlicher zu schreiben .
Was pathping betrifft , so hat das einen ziemlicheren Startoverhaed , so das -p Werte unter 50 einfach keinen Sinn ergeben .
Ich weiß ehrlich nicht was das mit dem zu tun hat was du gepostet hast, auf jeden fall hab ich den ürsprünglichen Code durch deinen ersetzt und dann trat dieser Fehler auf.
Der Code sah ursprünglich so aus:
"Set "STRING=Welcome to x, %USERNAME%. Enter a number to continue."
For /F %%A In ('"Prompt $H&For %%B In (1) Do Rem"') Do Set "BS=%%A"
For /F Delims^=^ EOL^= %%A In ('"(CMD/U/CEcho=%STRING%)|Find /V """'
) Do Set/P "=a%BS%%%A"<Nul & PathPing 127.0.0.1 -n -q 1 -p 100 1>Nul
echo.
echo [1] - start google chrome
echo [2] - open https://vacban.wtf/
echo [3] - open https://amazon.de/
echo [4] - open https://reddit.com/
echo [5] - exit script
echo.
if %main% == 1 goto chrome
if %main% == 2 goto vacban
if %main% == 3 goto amazon
if %main% == 4 goto reddit
if %main% == 5 goto close
echo error!
pause >nul
:chrome
start chrome.exe
:vacban
explorer "https://vacban.wtf/"
:amazon
explorer "https://amazon.de/"
explorer "https://reddit.com/"
:close
pause
exit
goto start "
nachdem ich deinen code eingefügt habe sah es dann so aus:
"for /f "delims=;" %%a in ('"echo prompt $H;|cmd /k"') do set "BS=%%a"
set "string=;Welcome to x, %USERNAME%. Choose a number to continue"
for /f delims^=^ eol^= %%a in ('"cmd /u /c echo:%string%|find /v """') do (
<nul set/p "=.%BS%%%a"
pathping localhost -q 1 -p 100 >nul
)
echo:
pause
echo.
echo [1] - start google chrome
echo [2] - open https://vacban.wtf/
echo [3] - open https://amazon.de/
echo [4] - open https://reddit.com/
echo [5] - exit script
echo.
if %main% == 1 goto chrome
if %main% == 2 goto vacban
if %main% == 3 goto amazon
if %main% == 4 goto reddit
if %main% == 5 goto close
echo error!
pause >nul
:chrome
start chrome.exe
:vacban
explorer "https://vacban.wtf/"
:amazon
explorer "https://amazon.de/"
explorer "https://reddit.com/"
:close
pause
exit
goto start"
da die variable %main% in Deinem Script nicht gesetzt ist, werden die if -Zeilen fehlerhaft interpretiert und und das Script schmiert gnadenlos ab...
demo.cmd
@echo off
for /f "delims=;" %%a in ('"echo prompt $H;|cmd /k"') do set "BS=%%a"
set "string==Welcome to x, %USERNAME%. Enter a number to continue."
for /f delims^=^ eol^= %%a in ('"cmd /u /c echo:%string%|find /v """') do (
<nul set/p "=.%BS%%%a"
pathping localhost -q 1 -p 100 >nul
)
echo:
echo [1] - start new chromeWindow
echo [2] - open https://vacban.wtf/
echo [3] - open https://amazon.de/
echo [4] - open https://reddit.com/
echo [X] - exit script
:ask
choice /c 1234X
if %errorlevel% equ 1 goto chrome
if %errorlevel% equ 2 goto vacban
if %errorlevel% equ 3 goto amazon
if %errorlevel% equ 4 goto reddit
if %errorlevel% equ 5 goto close
:chrome
start "" chrome.exe --new-window
goto :ask
:vacban
start "" "https://vacban.wtf/"
goto :ask
:amazon
start "" "https://amazon.de/"
goto :ask
:reddit
start "" "https://reddit.com/"
:close
exit /b
...so sollte es klappen
https://stackoverflow.com/a/17957105
Hier eine Lösung. Und warum das so ist? Weil das in den meisten Fällen das ist was man will. Hat das Script getan was es soll geht das Fenster zu.
habs versucht, vielleicht hätte ich direkt das ganze skript anhängen sollen, das sieht nämlich ungefähr so aus:
"Set "STRING=Welcome to x, %USERNAME%. Enter a number to continue."
For /F %%A In ('"Prompt $H&For %%B In (1) Do Rem"') Do Set "BS=%%A"
For /F Delims^=^ EOL^= %%A In ('"(CMD/U/CEcho=%STRING%)|Find /V """'
) Do Set/P "=a%BS%%%A"<Nul & PathPing 127.0.0.1 -n -q 1 -p 100 1>Nul
echo.
echo [1] - start google chrome
echo [2] - open https://vacban.wtf/
echo [3] - open https://amazon.de/
echo [4] - open https://reddit.com/
echo [5] - exit script
echo.
if %main% == 1 goto chrome
if %main% == 2 goto vacban
if %main% == 3 goto amazon
if %main% == 4 goto reddit
if %main% == 5 goto close
echo error!
pause >nul
:chrome
start chrome.exe
:vacban
explorer "https://vacban.wtf/"
:amazon
explorer "https://amazon.de/"
:mega
explorer "https://reddit.com/"
:close
pause
exit
goto start "
in visual studio code steht dann folgendes: ' "goto" kann syntaktisch an dieser Stelle nicht verarbeitet werden.'
Auf der verlinkten Seite stehen sogar mehrere Lösungen für verschiedene Anwendungsfälle.
Danke für die Antwort. Hier kam bei mir aber folgende Error:
"Der Befehl "Untitled-1" ist entweder falsch geschrieben oder
konnte nicht gefunden werden."