中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 13:06
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理菜单,如何做到在指定时间内不做选择,自动执行 查看 1,050 回复 7
楼 主 批处理菜单,如何做到在指定时间内不做选择,自动执行 发表于 2008-11-23 21:32 ·  中国 上海 电信
新手上路
积分 4
发帖 3
注册 2007-11-17 17:25
18年会员
UID 102947
性别 男
状态 离线
比如代码如下:


@echo off
echo.
echo 1.打开C盘
echo.
echo 2.打开D盘
set /p var=请输入:
if %var%==1 goto :1
if %var%==2 goto :2
:1
start c:\
exit
:2
start d:\
exit
能否做到在10秒内不做任何选择,则执行标签1 或者2???



———————————————————————————————————————
转移自 DOS疑难解答 & 问题讨论 (解答室)
今后发帖请尽量发到对应的版块。注册也有一年多了,应该对论坛比较熟悉了。
——管理员
———————————————————————————————————————
2 发表于 2008-11-23 22:11 ·  中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
用set /p肯定是实现不了的,可以考虑一下用choice.exe。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2008-11-24 10:06 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
双BAT……

一个做监视。
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
4 发表于 2008-11-24 11:20 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
试试?
代码来源于:纯批实现等待按键响应|指定输入
@echo off
if not "%1"=="" call %*
del "%temp%\#" 2>nul
start /b %~fs0 :aa
echo.&echo 1.打开c盘 2.打开d盘
echo.&set/p var=请输入:
if exist "%temp%\#" (del "%temp%\#"&exit)
>"%temp%\#" type nul&ping -n 2 127.1>nul
goto :%var%
:1
start c:\&exit
:2
start d:\&exit
:aa
for /l %%a in (10 -1 0) do (
title 倒计时 %%a 秒,无选择将打开 c 盘...
if exist "%temp%\#" (
del "%temp%\#"
title 用户已作选择...
exit
)
ping -n 2 127.1>nul
)
>"%temp%\#" type nul&start c:\&title 回车退出...&exit
5 发表于 2008-11-25 14:16 ·  中国 上海 电信
新手上路
积分 4
发帖 3
注册 2007-11-17 17:25
18年会员
UID 102947
性别 男
状态 离线
Originally posted by moniuming at 2008-11-24 11:20 AM:
试试?
代码来源于:纯批实现等待按键响应|指定输入
@echo off
if not "%1"=="" call %*
d ...


谢谢,但是如何默认执行后,就自动退出?一定要判断#文件才可以吗?或者执行后直接创建?不知道该如何实现,
6 发表于 2008-11-25 17:41 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
Originally posted by tomking at 2008-11-25 14:16:


谢谢,但是如何默认执行后,就自动退出?一定要判断#文件才可以吗?或者执行后直接创建?不知道该如何实现,

执行后自动退出是可以办到的,#这个文件是一定要进行判断的,不明白后面两问的意思,下面是执行后自动退出的代码:
@echo off
if not "%1"=="" call %*
del "%temp%\#" 2>nul
start /b %~fs0 :aa
echo.&echo 1.打开c盘 2.打开d盘
echo.&set/p var=请输入:
>"%temp%\#" type nul
goto :%var%
:1
start c:\&exit
:2
start d:\&exit
:aa
for /l %%a in (10 -1 0) do (
title 倒计时 %%a 秒,无选择将自动打开 c 盘...
if exist "%temp%\#" (
del "%temp%\#"
title 用户已作选择...
exit
)
ping -n 2 127.1>nul
)
start c:\&title 回车退出...
for /f "tokens=2" %%a in ('tasklist /fi "windowtitle eq 回车退出..." /nh') do (
taskkill /f /pid %%a
)
exit
7 发表于 2008-11-25 18:04 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
系统找不到文件 D:\test.batbat。
8 回7楼 发表于 2008-11-28 15:13 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
我想应该不是找不到文件,而是输入了1或2之外的字符出现"系统找不到指定的批处理标签"的提示(由于是一闪而过没看清?),增加下面的除错处理应该没问题了.
@echo off
if not "%1"=="" call %*
del "%temp%\#" 2>nul
start /b %~fs0 :aa
echo.&echo 1.打开c盘 2.打开d盘
:agn
echo.&set "var="&set/p var=请输入:
>"%temp%\#" type nul
for %%a in (1 2) do (if "%%a"=="%var%" goto :%var%)
del "%temp%\#"&echo "%var%"是错误的选择!&goto :agn
:1
start c:\&exit
:2
start d:\&exit
:aa
for /l %%a in (10 -1 0) do (
title 倒计时 %%a 秒,无选择将自动打开 c 盘...
if exist "%temp%\#" (
del "%temp%\#"
title 用户已作选择...
exit
)
ping -n 2 127.1>nul
)
start c:\&title 回车退出...
for /f "tokens=2" %%a in ('tasklist /fi "windowtitle eq 回车退出..." /nh') do (
taskkill /f /pid %%a
)
exit
论坛跳转: