求解批处理倒计时等待用户输入问题
自己封装了一个系统,想实现系统全自动无人值守安装,如果有人在的时候可以通过输入变量值来取消关机,如果没有人在的时候批处理可以启动shutdown-s-t命令后再实现批处理...
自己封装了一个系统,想实现系统全自动无人值守安装,如果有人在的时候可以通过输入变量值来取消关机,如果没有人在的时候批处理可以启动shutdown -s -t 命令后再实现批处理自身的倒计时退出。(批处理文件在封装的时候我已近设置了自删除功能,我试过用结束进程的方式,但结束后下面的语句无法执行以至于如果有人在的时候批处理进程结束后无法取消自动关机)。
批处理思路:启动shutdown -s -t 倒计时关机命令,然后倒计时等待用户输入“退出”或“取消关机”数值,如果倒计时时间内无操作则跳转到批处理退出命令。
这是我的代码
@echo off
title 技术员奥斑马
color 1f
mode con cols=65 lines=22
echo ---------------------------------
echo 恭喜您,系统已经安装完成
@echo off
regsvr32 /s C:\Windows\System32\Macromed\Flash\Flash32_11_5_502_135.ocx
cd C:\Documents and Settings\All Users\桌面
del /s /f /q wps*.lnk
shutdown -s -t 60
for /l %%a in (5,-1,1) do (
ping -n 1 -w 500 0.0.0.1>nul
echo 批处理将会在 %%a 秒后自动关闭退出
)
goto 3
ser /p dome=请输入:1退出,2取消关机:
if "%dome%"=="1" goto 1
if "%dome%"=="2" goto 2
:2
shutdown -a
goto 3
:1
goto 3
:3
exit 展开
批处理思路:启动shutdown -s -t 倒计时关机命令,然后倒计时等待用户输入“退出”或“取消关机”数值,如果倒计时时间内无操作则跳转到批处理退出命令。
这是我的代码
@echo off
title 技术员奥斑马
color 1f
mode con cols=65 lines=22
echo ---------------------------------
echo 恭喜您,系统已经安装完成
@echo off
regsvr32 /s C:\Windows\System32\Macromed\Flash\Flash32_11_5_502_135.ocx
cd C:\Documents and Settings\All Users\桌面
del /s /f /q wps*.lnk
shutdown -s -t 60
for /l %%a in (5,-1,1) do (
ping -n 1 -w 500 0.0.0.1>nul
echo 批处理将会在 %%a 秒后自动关闭退出
)
goto 3
ser /p dome=请输入:1退出,2取消关机:
if "%dome%"=="1" goto 1
if "%dome%"=="2" goto 2
:2
shutdown -a
goto 3
:1
goto 3
:3
exit 展开
2个回答
展开全部
既然是你封装的系统,就在系统中带上choice.exe
WinXp系统中很多没有choice.exe的,在Win7系统中有。
@echo off
rem 前面的代码省略……
echo 1 关机
echo 2 退出
choice /C 12 /T 10 /D 1 /M "系统将在10秒内执行[1 关机],如进行其他操作,请输入选选项:"
if errorlevel 2 exit
if errorlevel 1 shutdown /p /f
choice的用法如下:
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
描述: 该工具允许用户从选择列表选择一个项目并返回所选项目的索引。
参数列表: /C choices 指定要创建的选项列表。默认列表是 "YN"。
/N 在提示符中隐藏选项列表。提示前面的消息得到显示, 选项依旧处于启用状态。
/CS 允许选择分大小写的选项。在默认情况下,这个工具 是不分大小写的。
/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项
会得到选择。
/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选 项指定的一组选择中; 同时,必须用 /T 指定 nnnn。
/M text 指定提示之前要显示的消息。如果没有指定,工具只 显示提示。
/? 显示此帮助消息。
注意: ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选
择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,
该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的
ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0
的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降
序排列。
示例: CHOICE /?
CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"
CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"
WinXp系统中很多没有choice.exe的,在Win7系统中有。
@echo off
rem 前面的代码省略……
echo 1 关机
echo 2 退出
choice /C 12 /T 10 /D 1 /M "系统将在10秒内执行[1 关机],如进行其他操作,请输入选选项:"
if errorlevel 2 exit
if errorlevel 1 shutdown /p /f
choice的用法如下:
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
描述: 该工具允许用户从选择列表选择一个项目并返回所选项目的索引。
参数列表: /C choices 指定要创建的选项列表。默认列表是 "YN"。
/N 在提示符中隐藏选项列表。提示前面的消息得到显示, 选项依旧处于启用状态。
/CS 允许选择分大小写的选项。在默认情况下,这个工具 是不分大小写的。
/T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项
会得到选择。
/D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选 项指定的一组选择中; 同时,必须用 /T 指定 nnnn。
/M text 指定提示之前要显示的消息。如果没有指定,工具只 显示提示。
/? 显示此帮助消息。
注意: ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选
择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,
该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的
ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0
的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降
序排列。
示例: CHOICE /?
CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。"
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。"
CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。"
展开全部
===================cut================================
@echo off&setlocal enabledelayedexpansion
pushd %~dps0
:shijian
echo.请输入:y退出,n取消关机(剩下3秒)&cls&for /l %%a in (3,-1,1) do (
set temp=%%a&echo.请输入:y退出,n取消关机(剩下!temp!秒)&ping -n 2 127.1>nul&cls)
goto :morenshuru
:morenshuru
if exist enter2.vbs del enter2.vbs /f /q
echo set t=createobject("wscript.shell")>enter2.vbs
echo wscript.sleep 2000 >>enter2.vbs
echo t.sendkeys "^%{TAB}y{ENTER}" >>enter2.vbs
start enter2.vbs
echo.请输入:y退出,n取消关机
set /p dome=
if /i "%dome%"=="y" goto 1
if /i "%dome%"=="n" goto 2
echo.输入错误!
goto :morenshuru
:1
echo.这里关机了!
pause&exit
:2
echo.这里不关机了!
pause&exit
=======================cut============================
批处理配合vbs只有这样了。测试了下。可以达到目的。
祝你成功!希望对你有帮助,望采纳!
@echo off&setlocal enabledelayedexpansion
pushd %~dps0
:shijian
echo.请输入:y退出,n取消关机(剩下3秒)&cls&for /l %%a in (3,-1,1) do (
set temp=%%a&echo.请输入:y退出,n取消关机(剩下!temp!秒)&ping -n 2 127.1>nul&cls)
goto :morenshuru
:morenshuru
if exist enter2.vbs del enter2.vbs /f /q
echo set t=createobject("wscript.shell")>enter2.vbs
echo wscript.sleep 2000 >>enter2.vbs
echo t.sendkeys "^%{TAB}y{ENTER}" >>enter2.vbs
start enter2.vbs
echo.请输入:y退出,n取消关机
set /p dome=
if /i "%dome%"=="y" goto 1
if /i "%dome%"=="n" goto 2
echo.输入错误!
goto :morenshuru
:1
echo.这里关机了!
pause&exit
:2
echo.这里不关机了!
pause&exit
=======================cut============================
批处理配合vbs只有这样了。测试了下。可以达到目的。
祝你成功!希望对你有帮助,望采纳!
追问
谢谢你的回答,非常的感谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询