具有时间弹出窗口的关闭批处理命令

时间:2014-07-02 22:24:36

标签: user-interface batch-file popup shutdown

我正在寻找一段批量文件代码,该代码会在一段时间后关闭计算机。我得到了明显的答案,即:

shutdown -s -f -t 120

但是说我想在两分钟之后关闭,而不是五分钟或十分钟?

有没有办法制作一个.bat文件,在查询用户(通过弹出窗口或其他方式)查看多少 分钟 之后关闭计算机关机。

现在,我自己并不是很狡猾,但这就是我的想法:用户运行.bat文件,并出现一个弹出窗口,询问关机需要多长时间。用户输入' 5',然后按'输入'。批处理文件然后强制关闭所有打开的程序,并在300秒(5分钟)后关闭。

此外,批处理文件是否可以内置某种形式的计时器?

我已经看到它完成了,但是cmd窗口庞大而笨重 (可选:以某种方式将中止关闭功能合并到同一个批处理文件中。)
[我知道我可以在单独的批处理文件中使用shutdown -a,但这并不好玩。]

编辑:与以下代码类似,只是在计时器启动后关闭计算机。另外,如果可能的话,使用更小的cmd框?

@ECHO off
cls
color 0B
:taskkill
echo.
echo.
echo.
echo.
echo.               
echo.               
echo.               
echo.               
echo.               
echo.
echo                                Program To Shutdown
echo.    
set /p taskkill=                      
if "%taskkill%" == "%taskkill%" goto taskkillconfirm
exit
:taskkillconfirm
color 0B
:image
set image=/im
if "%image%" == "%image%" goto imageconfirm
exit
:imageconfirm
color 0B
:forced
set forced=/f
if "%forced%" == "%forced%" goto forcedconfirm
exit
:forcedconfirm
:hour
color 0B
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.                                   Hours?:
echo.
set /p hour=                                      
:min
color 0B
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo                                   Minutes?:
echo.
set /p min=                                      
:sec
color 0B
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo                                   Seconds?:
echo.
set /p sec=                                      
:continue
color 0B
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo                           %taskkill%  Shutdown in
echo.                                                             
echo                         %hour%  Hours  %min%  Minutes  %sec%  Seconds
set /a sec="%sec%-1"
if %sec%==-1 set /a min="%min%-1"
if %sec%==-1 set /a sec="59"
if %min%==-1 set /a hour="%hour%-1"
if %min%==-1 set /a min="59"
if %hour%==-1 goto done
ping -n 2 127.0.0.1 >NUL
goto continue
:done
color 0B
cls
taskkill %image% %taskkill% %forced%
exit

此外,上述代码到底是做什么的呢?

2 个答案:

答案 0 :(得分:0)

set /p ans=How Many Minutes to shutdown: 
set /a to=ans * 60
shutdown /s /t %to%
cls
choice /c y /m "Press Y to abort shutdown"
shutdown -a

请输入帮助

set /?
choice /?
shutdown /?
cls /?

如果您想循环播放,可以使用ifgotochoice /t来实现计时器。

if /?
goto /?
choice /?

以及可用的命令(大多数不是全部)

help

答案 1 :(得分:0)

这是我放在一起的快速批量文章。它会在几分钟内要求用户输入,并将输入转换为秒以开始关闭。如果按下任何键,它将停止关机。

custom_shutdown.bat

@echo off
title Custom Shutdown

REM Ask the user for input and convert minutes to seconds
set /P minutes="Enter shutdown delay in minutes: "
set /A seconds="%minutes%*60"

REM Start windows' shutdown command
echo Starting shutdown...
shutdown -s -f -t %seconds%

REM Cancel shutdown on keypress
echo.
echo Press any key to cancel the shutdown
pause>nul
shutdown -a
echo Shutdown canceled!

pause
exit

无法使用弹出窗口要求用户输入标准批处理命令。使用其他应用程序或VBScripts,您可以显示弹出窗口。有关弹出消息和输入的更多信息,请查看this page

要更改控制台窗口的大小,您可以使用mode - 命令:

mode con cols=60 lines=10

没有专用命令等待几秒钟,但您可以使用ping - 命令,因为一次ping总是需要一秒钟。因为我们不需要命令的输出,所以我们使用>nul将其丢弃。等待5秒的示例代码:

ping -n 5 localhost>nul

如果你不知道google对大多数批处理问题有什么帮助。另外,从较小的程序开始,不要尝试在第一个程序中使用每个功能(输入,数学,选择等)。