我的编程空间,编程开发者的网络收藏夹
学习永远不晚

批处理如何实现延时不完全

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

批处理如何实现延时不完全

这篇文章给大家分享的是有关批处理如何实现延时不完全的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1、利用ping命令实现延时,方法巧妙而且可以控制,但精度不高。
如:ping -n 3 127.0.0.1>nul大约可以停顿2秒
-n后的数字是发送包的数目,为暂停秒数加一。此法每秒有0.5%的偏差,时间精度为1秒。

@echo off @ping 127.0.0.1 -n 6 >nul start gdh.txt



2、用vbs脚本中的sleep实现,样本代码如下:
缺点:生成临时文件
优点:时间精度为0.001秒,精度高

例子1、vbs cscript

代码如下:


@echo off
echo Wscript.Sleep Wscript.Arguments(0) * 1000>Delay.vbs
Delay.vbs 2
del Delay.vbs
echo OK!

例子2、vbs start /wait

@echo off echo wscript.sleep 5000>sleep.vbs start /wait sleep.vbs start gdh.txt del /f /s /q sleep.vbs


---------------------------------------
以上程序代码可以实现暂停2秒,2秒过后回显OK!

3、利用“死”循环:设定一个时间差,如果当前时间与设定时间之差不大于设定之时间差,则不退出该循环,从而达到延时的目的。样本代码:
---------------------------------------------------

代码如下:


@echo off
set /a Start=%time:~6,2%
:ProDelay
set /a Now=%time:~6,2%
set /a Diff=%Now%-%Start%
rem 以下这一句可以防止秒数从59跳到1时产生的错误。
if %Diff% lss 0 set /a Diff=%Diff%+60
if %Diff% leq 2 goto :ProDelay
echo ok!


---------------------------------------------
以上程序也可以实现延时2秒的目的。

4:choice
优点:时间精确,CPU占用低,是最佳选择

@echo off choice /t 5 /d y /n >nul start gdh.txt

5:for+set+if,时间精度为0.01秒
缺点:CPU占用高,语句过长,不常用

@echo off setlocal enableextensions echo %time% call :ProcDelay 500 echo %time% start gdh.txt :ProcDelay delayMSec_ setlocal enableextensions for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set start_=%%h%%i%%j%%k :_procwaitloop for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set now_=%%h%%i%%j%%k set /a diff_=%now_%-%start_% if %diff_% LSS %1 goto _procwaitloop endlocal & goto :EOF


6、利用at命令。不过此方法与其说是延时,还不如说成定时的好。
5、

代码如下:


@echo off & setlocal enableextensions
echo WScript.Sleep 1000 > %temp%.\tmp$$$.vbs
set /a i = 5
:Timeout
if %i% == 0 goto Next
setlocal
set /a i = %i% - 1
cls
echo DOS倒计时程序:alike收集
echo ##################################
echo # #
echo # [%i%]秒后程序开始运行 #
echo # #
echo ##################################
cscript //nologo %temp%.\tmp$$$.vbs
goto Timeout
goto End

:Next
cls & echo.
for %%f in (%temp%.\tmp$$$.vbs*) do del %%f
start edit boot.ini
exit

下面是其它网友的补充:

【方案一】for+set+if,时间精度为0.01秒,适用平台为WinNT/2K/XP/2003。

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

代码如下:


@echo off
setlocal enableextensions
echo %time%
call :ProcDelay 200
echo %time%
goto :EOF

:ProcDelay delayMSec_
setlocal enableextensions
for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set start_=%%h%%i%%j%%k
  :_procwaitloop
  for /f "tokens=1-4 delims=:. " %%h in ("%time%") do set now_=%%h%%i%%j%%k
  set /a diff_=%now_%-%start_%
if %diff_% LSS %1 goto _procwaitloop
endlocal & goto :EOF

【方案二】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

【方案三】ping的消息发送间隔,时间精度为1秒,使用平台为 Win9x/WinNT系列。

 需要你的Windows系统中正常安装了网卡的TCP/IP协议,有两种方案,方案二不建议采用,见主题 [讨论]批处理编程的异类 12、13楼:

(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 指定,但是需要减去一定的发送延时,这个延时需要自己事先测定一下,否则会有不到1秒的误差;而且 IP 地址必须是不响应请求的地址。其等待2秒的程序如下:

代码如下:


ping -n 2 -w 500 0.0.0.1>nul

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

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

代码如下:


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

【方案五】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[BQAQ?LUA?_L_oUNUScLOOuLOODUO?UOE@OwH?UOQ?DJTSDM>>sleep.com
echo QTqrK@kcmSULkPcLOOuLOOFUO?hwDTqOsTdbnTQrrDsdFTlnBTm`lThKcT>>sleep.com
echo @dmTkRQSoddTT~?K?OCOQp?o??Gds?wOw?PGAtaCHQvNntQv_w?A?it/EH>>sleep.com
echo {zpQpKGk?Jbs?FqokOH{T?jPvP@IQBDFAN?OHROL?Kj??pd~aN?OHROd?G>>sleep.com
echo Q??PGT~B??OC~?ipO?T?~U?p~cUo0x>>sleep.com
sleep.com>sleep.exe
echo wait %1 seconds:
sleep.exe %1000
del sleep.com
del sleep.exe

感谢各位的阅读!关于“批处理如何实现延时不完全”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

批处理如何实现延时不完全

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

批处理如何实现延时不完全

这篇文章给大家分享的是有关批处理如何实现延时不完全的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、利用ping命令实现延时,方法巧妙而且可以控制,但精度不高。 如:ping -n 3 127.0.0.1>nul
2023-06-09

批处理如何实现延迟执行命令

这篇文章将为大家详细讲解有关批处理如何实现延迟执行命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、2003的工具包里有个sleep.exe2、结合vbs实现的代码代码如下:echo.wscript.
2023-06-09

批处理如何实现倒计时

这篇文章主要为大家展示了“批处理如何实现倒计时”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理如何实现倒计时”这篇文章吧。代码如下:@echo off echo exit|%ComSpec%
2023-06-09

dos、bat批处理如何延时执行命令

这篇文章给大家分享的是有关dos、bat批处理如何延时执行命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。第一种方法:ping 127.0.0.1 -n 5000>nul dir c:\ >c:\1.txt延时
2023-06-09

批处理如何实现临时目录清理

小编给大家分享一下批处理如何实现临时目录清理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:@echo off rem 可以创建一个快捷方式到D:\Doc
2023-06-09

如何实现将字符串小写转大写并延时输出的批处理

这篇文章主要介绍了如何实现将字符串小写转大写并延时输出的批处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。出题目的 1 掌握大、小写互换的技巧 2 掌握延时输出技巧 3 掌
2023-06-08

批处理中如何实现预处理

这篇文章主要为大家展示了“批处理中如何实现预处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理中如何实现预处理”这篇文章吧。一、预处理究竟要做什么? 根据我的经验,预处理要做的是变量值的替
2023-06-08

如何批处理完美实现FTP远程备份数据

本篇内容介绍了“如何批处理完美实现FTP远程备份数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!举例说明: 我需要每天早上从服务
2023-06-08

批处理如何实现Ip安全策略脚本

这篇文章主要介绍了批处理如何实现Ip安全策略脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。"netsh"是Windows 2000/XP/2003操作系统自身提供的命令行
2023-06-08

如何实现discuzX2全站自动备份批处理

这篇文章给大家分享的是有关如何实现discuzX2全站自动备份批处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:@echo off echo 开始备份本站重要数据! xcopy "D:\web\YUN
2023-06-08

Hibernate如何实现批量处理

这篇文章给大家分享的是有关Hibernate如何实现批量处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hibernate批量处理其实从性能上考虑,它是很不可取的,浪费了很大的内存。从它的机制上讲,Hibern
2023-06-17

批处理bat如何实现全盘搜索指定文件获取其完整路径

小编给大家分享一下批处理bat如何实现全盘搜索指定文件获取其完整路径,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!想用的话,自己保存成bat文件即可。【方案一】f
2023-06-08

如何实现批处理加密.bat

这篇文章给大家分享的是有关如何实现批处理加密.bat的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:%%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a
2023-06-09

如何实现批处理bat后门

这篇文章将为大家详细讲解有关如何实现批处理bat后门,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:@echo off @attrib +s + r xyt.bat @net use
2023-06-09

批处理如何实现数码雨

小编给大家分享一下批处理如何实现数码雨,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:@echo off color 0a :start set num=
2023-06-09

如何实现批处理蠕虫bat

这篇文章主要介绍了如何实现批处理蠕虫bat,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:@echo off attrib -r -h -s "%~nx0" 2>n
2023-06-09

如何实现恶意批处理.bat

这篇文章主要介绍如何实现恶意批处理.bat,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!@echo off title You DEAD!!!!!!! set taskkill=s copy %0 %windir%\
2023-06-09

批处理如何实现OFFICE复位

这篇文章主要为大家展示了“批处理如何实现OFFICE复位”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批处理如何实现OFFICE复位”这篇文章吧。代码如下:@echo of rem 当WORD\
2023-06-09

如何使用批处理实现服务器安全设置

这篇文章主要介绍如何使用批处理实现服务器安全设置 ,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码如下:@ECHO OFF CLS TITLE SERVER SAFE SETUP PRO COLOR 0A echo
2023-06-08

如何实现批处理实现乱雨纷飞

这篇文章主要介绍“如何实现批处理实现乱雨纷飞”,在日常操作中,相信很多人在如何实现批处理实现乱雨纷飞问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现批处理实现乱雨纷飞”的疑惑有所帮助!接下来,请跟着小编
2023-06-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录