Batch skript schließt automatisch, wieso?

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 .

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

choom727 
Beitragsersteller
 27.05.2022, 19:08

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."

Erzesel  27.05.2022, 19:36
@choom727

...und was hat das mit der von mir geposteten Batch zu tun?

ich rufe nirgends etwas mit "Untitled-1" auf, ergo kann es diesbezüglich kein Gemecker geben. Was Du sonst noch zusammengebastelt hast, entzieht sich meinem Wissen.

choom727 
Beitragsersteller
 27.05.2022, 19:41
@Erzesel

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/"

:reddit

explorer "https://reddit.com/"

:close

pause

exit

goto start "

choom727 
Beitragsersteller
 27.05.2022, 19:43
@choom727

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/"

:reddit

explorer "https://reddit.com/"

:close

pause

exit

goto start"

Erzesel  27.05.2022, 20:06
@choom727

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

choom727 
Beitragsersteller
 27.05.2022, 20:36
@Erzesel

jetzt funktioniert's vielen dank!!

Von Experte PWolff bestätigt

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.

Woher ich das weiß:Berufserfahrung – Berufserfahrung

choom727 
Beitragsersteller
 27.05.2022, 19:00

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.'

PWolff  27.05.2022, 18:38

Auf der verlinkten Seite stehen sogar mehrere Lösungen für verschiedene Anwendungsfälle.