19fl081
Goto Top

JA Nein und Abfrage in Batch + Ablauftimer

Hallo zusammen,
ich bin hier im Forum fündig geworden, auf der Suche nach einer Abfrage von "JA" NEIN":

for /f "delims=" %%i in ('cscript //nologo %temp%\info_frage.vbs') do set "Antwort=%%i"
del %temp%\info_frage.vbs
if "%Antwort%"=="4" goto :JA
if "%Antwort%"=="7" goto :NEIN

Nun brauche ich einen Ablauftimer, der nach 1 Min selbstständig eine Auswahl trifft.
Hat jemand eine Idee für mich?

FLO

Content-Key: 3188511309

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

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

Member: TK1987
TK1987 Jun 27, 2022 at 07:04:39 (UTC)
Goto Top
Moin,

dafür ist der Befehl choice gedacht. Beispiel:
@echo off
choice /c jn /m "Moechten Sie fortfahren?" /t 60 /d n  
REM  Falls Nein, Skript beenden
if %errorlevel% equ 2 goto :EoF

REM  Ja gewählt, hier setzt das Skript fort.
echo Ok, fahre fort...
pause

Gruß Thomas
Member: 19Fl081
19Fl081 Jun 27, 2022 at 07:07:27 (UTC)
Goto Top
Hallo TK1987, danke für die Antwort.
Wie baue ich denn diesen ein?
Denn sobald die Box auftaucht, ist warten auf Antwort angesagt und es wird nichts unternommen bis eine Antwort vom User kommt
Member: 19Fl081
19Fl081 Jun 27, 2022 at 07:08:04 (UTC)
Goto Top
Oh hatte eine Zeile vergessen

echo WScript.Echo MsgBox("Der PC muss Neugestartet werden soll der PC jetzt oder in 5 Minuten Neugestartet werden? | Ja fuer sofort | Nein fuer 5 Min",4,"Neustart")>%temp%\info_frage.vbs


for /f "delims=" %%i in ('cscript //nologo %temp%\info_frage.vbs') do set "Antwort=%%i"
del %temp%\info_frage.vbs
if "%Antwort%"=="4" goto :info sofort
if "%Antwort%"=="7" goto :In 5 Minuten
Member: TK1987
TK1987 Jun 27, 2022 at 07:11:38 (UTC)
Goto Top
Zitat von @19Fl081:
Denn sobald die Box auftaucht, ist warten auf Antwort angesagt und es wird nichts unternommen bis eine Antwort vom User kommt
Oder bis die Minute um ist. Dafür ist ja der Schalte /t da. Siehe hier oder choice /?

Gruß Thomas
Member: 19Fl081
19Fl081 Jun 27, 2022 at 07:37:57 (UTC)
Goto Top
puhh ich Kapiere es nicht face-sad

Dann bin ich aus der Box heraus

@echo off & setlocal
echo WScript.Echo MsgBox("Der PC muss Neugestartet werden soll der PC jetzt oder in 5 Minuten Neugestartet werden? | Ja fuer sofort | Nein fuer 5 Min",4,"Neustart")>%temp%\info_frage.vbs
for /f "delims=" %%i in ('cscript //nologo %temp%\info_frage.vbs') do set "Antwort=%%i"
del %temp%\info_frage.vbs
if "%Antwort%"=="4" goto :info sofort
if "%Antwort%"=="7" goto :In 5 Minuten


Bekomme das hier nicht hin
Member: miniversum
miniversum Jun 27, 2022 at 10:50:22 (UTC)
Goto Top
Hallo,

benutze einfach statt dem "MsgBox" Befehl im vbs den Befehl "Popup":
WScript.Echo MsgBox("Der PC muss Neugestartet werden soll der PC jetzt oder in 5 Minuten Neugestartet werden? | Ja fuer sofort | Nein fuer 5 Min",4,"Neustart")
wird zu
WScript.Echo CreateObject("WScript.Shell").Popup("Der PC muss Neugestartet werden soll der PC jetzt oder in 5 Minuten Neugestartet werden? | Ja fuer sofort | Nein fuer 5 Min", 10,"Neustart",4)

Die 10 steht für 10 Sekunden Timeout.
Die Rückgabewerte sidn identisch zu MsgBox. Bei erreien des Timeout ist der Rückgabewert -1. Da musst du dann halt in der Batch drauf reagieren.

Gruß
...
Member: 19Fl081
19Fl081 Jun 27, 2022 at 14:27:16 (UTC)
Goto Top
Hey, klappt leider nicht:
@echo off & setlocal
echo WScript.Echo MsgBox("Der PC muss Neugestartet werden soll der PC jetzt oder in 5 Minuten Neugestartet werden? | Ja fuer sofort | Nein fuer 5 Min", 10,"Neustart",4")>%temp%\info_frage.vbs
for /f "delims=" %%i in ('cscript //nologo %temp%\info_frage.vbs') do set "Antwort=%%i"
del %temp%\info_frage.vbs

if "%Antwort%"=="4" goto :info sofort
if "%Antwort%"=="7" goto :In 5 Minuten
IF %ERRORLEVEL%=="-1" goto :In 5 Minuten


Es kommt keine MsgBox für die Abfrage, nur das er die Erzeugte Temp Datei nicht finden kann.
Member: colinardo
colinardo Jun 28, 2022 updated at 15:48:35 (UTC)
Goto Top
@echo off
> "%TEMP%\popup.vbs" echo wscript.echo CreateObject^("Wscript.Shell"^).Popup^("Der PC muss neu gestartet werden, soll der PC jetzt oder in 5 Minuten neu gestartet werden? (Ja fuer sofort | Nein fuer 5 Min)",60,"Neustart",4^)  
for /f "delims=" %%a in ('cscript //NOLOGO "%TEMP%\popup.vbs"') do set answer=%%a  
:: ja gewählt, reboote sofort
if %answer% == 6 goto REBOOT
:: nein gewählt, warte mit reboot 5 Minuten
if %answer% == 7 goto REBOOTWAIT
:: timeout nach 60s, reboote sofort
if %answer% == -1 goto REBOOT

:REBOOT
shutdown -r -f -t 0
goto :eof

:REBOOTWAIT
shutdown -r -f -t 300
Warum du das nicht gleich alles innerhalb der VBS abfackelst sondern so ein VBS/Batch gematsche fabrizierst, bleibt wohl dein exklusives Geheimnis face-smile. Das würde in einer reinen VBS reichen ohne zusätzlich eine Batch zu bemühen.
Dim answer, objShell
Set objShell = CreateObject("Wscript.Shell")  
answer = objShell.Popup("Der PC muss neu gestartet werden, soll der PC jetzt oder in 5 Minuten neu gestartet werden? (Ja fuer sofort | Nein fuer 5 Min)",60,"Neustart",4)  
Select Case answer
	Case 6,-1
		objShell.Run "shutdown -r -f -t 0",0,False  
	Case Else
		objShell.Run "shutdown -r -f -t 300",0,False  
End Select
Oder man nehme gleich die Powershell
if ((New-Object -Com WScript.Shell).Popup("Der PC muss neu gestartet werden, soll der PC jetzt oder in 5 Minuten neu gestartet werden? (Ja fuer sofort | Nein fuer 5 Min)",60,"Neustart",4) -in (6,-1)){  
    Restart-Computer -Force
}else{
    shutdown -r -f -t 300
}
Grüße Uwe

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.