中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]关于DOS延时处理命令。
English/Chinese Fix Translation
作者:
标题: [求助]关于DOS延时处理命令。 上一主题 | 下一主题
xanadu999
初级用户




积分 117
发帖 5
注册 2004-7-1
状态 离线
『楼 主』:  [求助]关于DOS延时处理命令。 使用 LLM 解释/回答一下

为工作之便,写了一个批处理,就是一个简单的循环语句,使用后发现没有达到预期效果,我要的效果的每秒钟执行一次,如果有个延时的命令或者能暂停五秒又继续运行的命令就好了。请教各位了?


2005-5-25 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

Wengier的MSDOS 7.1超级启动盘里的WAIT.COM可以延时。如:WAIT 5




----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
2005-5-25 00:00
查看资料  发送邮件  发短消息  网志  OICQ (373343541)  编辑帖子  回复  引用回复
linson
中级用户




积分 283
发帖 31
注册 2004-3-6
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

如果不需要太精确的话,可以用ping


2005-5-26 00:00
查看资料  发送邮件  发短消息  网志  OICQ (149525162)  编辑帖子  回复  引用回复
xanadu999
初级用户




积分 117
发帖 5
注册 2004-7-1
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

Ping -w?????好像不行???具体怎么操作??请楼上的兄弟明示?


2005-5-26 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

===============
此帖内容已被作者合并入10楼帖中
===============







※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-5-26 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
xanadu999
初级用户




积分 117
发帖 5
注册 2004-7-1
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

楼上兄弟,我用的2K的系统,如何做???如果把9X中的CHOICE.COM复制到2K系统中可行吗????


2005-5-27 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

Win9x的choice.com完全可以在Win2000/XP/2003下使用。只是有一个问题:在中文状态的CMD运行choice后,CMD界面会返回英文界面。




----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
2005-5-27 00:00
查看资料  发送邮件  发短消息  网志  OICQ (373343541)  编辑帖子  回复  引用回复
defrag
中级用户

痴迷DOS者


积分 456
发帖 570
注册 2004-10-9
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

hehe,在里面家一个QB,用以下功能,也回英文,事先用英文或用汉字系统就行
SLEEP.BAS:
SLEEP VAL(COMMAND$)




DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
2005-5-27 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
9zhmke
中级用户




积分 355
发帖 99
注册 2003-1-6
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

2k自己有延时命令啊,自己查一下。


2005-5-28 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 10 楼』:  在批处理中等待/延迟/暂停一定的时间 使用 LLM 解释/回答一下

下文已转载至 {8905}批处理编程的异类
http://www.cn-dos.net/forum/viewthread.php?tid=8905#pid54227
请从此处查看最近更新!


1、暂停(Pause)、延迟(Delay)、等待(Wait)、睡眠(Sleep)

1)for+set+if,时间精度为0.01秒,适用平台为WinNT/2K/XP/2003。

利用for解析变量%time%并存为两个时间点%start%和%now%,再利用set /a计算两个时间点的时间差,最后用if判断时间差是否达到设定的暂停时间。

@echo off
setlocal enableextensions
echo %time%
call <img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">rocDelay 200
echo %time%
goto :EOF

<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">rocDelay delayMSec_
setlocal enableextensions
for /f "tokens=1-4 delims=:. " %%h in ("%time%"<img src="images/smilies/face-wink.png" align="absmiddle" border="0"> do set start_=%%h%%i%%j%%k
:_procwaitloop
for /f "tokens=1-4 delims=:. " %%h in ("%time%"<img src="images/smilies/face-wink.png" align="absmiddle" border="0"> do set now_=%%h%%i%%j%%k
set /a diff_=%now_%-%start_%
if %diff_% LSS %1 goto _procwaitloop
endlocal & goto :EOF


2)VBS脚本中的sleep函数,时间精度为0.001秒,使用平台为Win9x/WinNT系列。

动态创建一个调用sleep()函数的VBS脚本,然后用Windows脚本宿主的命令行版本cscript调用它。

@echo off & setlocal enableextensions enabledelayedexpansion
echo WScript.Sleep 2000 > %temp%\tmp$$$.vbs
echo %time%
cscript //nologo %temp%\tmp$$$.vbs
echo %time%
for %%f in (%temp%\tmp$$$.vbs) do if exist %%f del %%f
endlocal & goto :EOF


3)ping的消息发送间隔,时间精度为1秒,使用平台为Win9x/WinNT系列。

需要你的Windows系统中正常安装了网卡的TCP/IP协议,有两种方案:

(1) 利用ping两次发送消息之间的间隔时间。ping在发送多个消息时,在得到上一次消息的回应后,它会再等待1秒的时间才发送下一次消息,而这个回应时间因机型、系统和网络配置而不同,其中IP地址尤其关键,只有本地的回送地址 127.0.0.1 因为是立即回应所以才是相对恒定的,其他地址大多会产生显著的差异。此种方法要等待更大的时间,是指定发送的消息数为等待的时间加一,因为第一个消息是不等待的,IP 地址必须是 127.0.0.1 。其等待2秒的程序如下:

::根据植树原则,n后的数字为暂停秒数加一
ping -n 3 127.0.0.1>nul


(2) 利用ping的最大等待时间。ping向0.0.0.1发送一次“网际消息控制协议 (ICMP)”回响请求消息,因为 0.0.0.1 是个无法响应 ping 请求的IP地址,所以默认情况下,ping会等待一定的最大响应时间——4秒后便停止等待,而-w可以改变这个每发送一次消息所等待的最大响应时间。而如果将 IP 地址改为立即响应的127.0.0.1或其他响应时间很短的IP ,那 -w 便失去了作用,因为每次发送等待时间都不会达到最大的响应时间,此时延时会缩短。此种方法要等待更大的时间,可以直接使用 -w 指定,但是需要减去 500 毫秒(原因尚未知),而且 IP 地址必须是不响应请求的地址。其等待2秒的程序如下:
ping -n 2 -w 500 0.0.0.1>nul


4)choice的缺省选择等待功能,时间精度为1秒,适用平台为MS-DOS/Win9x/WinNT系列。

/t:y,2 将缺省选择字符设置为y,等待时间是2秒,/n禁止提示出现在命令行上,“rem|”的作用是禁止choice从键盘接受按键,从而暂停不会因为按下y或者其它键而被意外终止。

rem|choice /t:y,2 /n >nul


5)ASCII汇编代码,延迟精度为0.001秒,适用平台为MS-DOS/Win9x/WinNT。

德国人Herbert Kleebauer给出了一个通用方案,通过ASCII汇编器间接产生一个sleep.exe程序来实现延迟,这个程序分为DOS和Win两个模块,分别调用DOS系统中断服务和WindowsAPI。

:: Sleep.bat - Sleep/Delay/Wait n seconds
:: Herbert Kleebauer(Germany) - 2005/05/29
:: Modified by Will Sort - 2005/06/02, 07-25
@echo off
echo q | debug>nul
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>sleep.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>sleep.com
echo T}{z~~@GwkBG@OEKcUt`~}@MqqBsy?seHB~_Phxr?@zAB`LrPEyoDt@Cj?>>sleep.com
echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>sleep.com
echo LFvAURQ?OYLTQ@@?~QCoOL~RDU@?aU?@{QOq?@}IKuNWpe~FpeQFwH?Vkk>>sleep.com
echo _GSqoCvH{OjeOSeIQRmA@KnEFB?p??mcjNne~B?M??QhetLBgBPHexh@e=>>sleep.com
echo EsOgwTLbLK?sFU`?LDOD@@K@xO?SUudA?_FKJ@N?KD@?UA??O}HCQOQ??R>>sleep.com
echo _OQOL?CLA?CEU?_FU?UAQ?UBD?LOC?ORO?UOL?UOD?OOI?UgL?LOR@YUO?>>sleep.com
echo dsmSQswDOR











Last edited by willsort on 2005-10-4 at 14:02 ]




※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-6-2 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
32211001
初级用户




积分 141
发帖 11
注册 2004-9-30
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

请问willsort:
在你最后上传那个批处理里面:
echo sleep.com"&gt;Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=&gt;sleep.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6&gt;&gt;sleep.com
echo &gt;sleep.com"&gt;T}{z~~@GwkBG@OEKcUt`~}@MqqBsy?seHB~_Phxr?@zAB`LrPEyoDt@Cj?&gt;&gt;sleep.com
echo &gt;sleep.com"&gt;pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz&gt;&gt;sleep.com
echo &gt;sleep.com"&gt;LFvAURQ?OYLTQ@@?~QCoOL~RDU@?aU?@{QOq?@}IKuNWpe~FpeQFwH?Vkk&gt;&gt;sleep.com
echo &gt;sleep.com"&gt;_GSqoCvH{OjeOSeIQRmA@KnEFB?p??mcjNne~B?M??QhetLBgBPHexh@e=&gt;&gt;sleep.com
echo &gt;sleep.com"&gt;EsOgwTLbLK?sFU`?LDOD@@K@xO?SUudA?_FKJ@N?KD@?UA??O}HCQOQ??R&gt;&gt;sleep.com
echo &gt;sleep.com"&gt;_OQOL?CLA?CEU?_FU?UAQ?UBD?LOC?ORO?UOL?UOD?OOI?UgL?LOR@YUO?&gt;&gt;sleep.com
echo dsmSQswDOR




怎么com文件可以这样直接输入?
echo进的是什么格式的源代码呢?(原来见过echo debug代码的,就是所谓bat2exe那类程序,但是这个看起来又不是啊……)
谢谢


2005-6-6 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
uiopuiop
中级用户





积分 400
发帖 211
注册 2007-9-30
状态 离线
『第 12 楼』:  2003 版本CHOICE 使用 LLM 解释/回答一下

2003 版本的CHOICE为什么REM 不起作用?

rem|choice /t 2 /n /d n


~~~~~~~~~~~~~~~~~~~~
c:\>choice /?

CHOICE

Description:
This tool allows users to select one item from a list
of choices and returns the index of the selected choice.

Parameter List:
/C choices Specifies the list of choices to be created.
Default list is "YN".

/N Hides the list of choices in the prompt.
The message before the prompt is displayed
and the choices are still enabled.

/CS Enables case-sensitive choices to be selected.
By default, the utility is case-insensitive.

/T timeout The number of seconds to pause before a default
choice is made. Acceptable values are from 0 to
9999. If 0 is specified, there will be no pause
and the default choice is selected.

/D choice Specifies the default choice after nnnn seconds.
Character must be in the set of choices specified
by /C option and must also specify nnnn with /T.

/M text Specifies the message to be displayed before
the prompt. If not specified, the utility
displays only a prompt.

/? Displays this help message.

NOTE:
The ERRORLEVEL environment variable is set to the index of the
key that was selected from the set of choices. The first choice
listed returns a value of 1, the second a value of 2, and so on.
If the user presses a key that is not a valid choice, the tool
sounds a warning beep. If tool detects an error condition,
it returns an ERRORLEVEL value of 255. If the user presses
CTRL+BREAK or CTRL+C, the tool returns an ERRORLEVEL value
of 0. When you use ERRORLEVEL parameters in a batch program, list
them in decreasing order.

Examples:
CHOICE /?
CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "Select a for option 1 and b for option 2."
CHOICE /C ab /N /M "Select a for option 1 and b for option 2."


2009-5-9 23:48
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: