[BATCH / .Bat文件]帮助计算错误?

时间:2014-02-19 22:55:05

标签: batch-file

好吧我试着让一个批处理文件每1秒钟计数一次,但它可以部分地实现......

我所做的代码是,如果秒数低于10,则显示为01,02 ..不像1,2 ..

这是完整的文件

@Echo off
set m=00
set m1=00 //m1 being minutes and m being seconds
echo %m% 
:clock
set /a m+=1
if %m% LSS 10 ( if %m% GTR 0 ( set m=0%m%)) ELSE (break) // for detecting if less than 10 found out that break doesnt do any job
if %m% GTR 60 (set /a m1+=1) //60 seconds will make it a minute .. 
if %m1% LSS 10  ( if %m1% GTR 0 (set m1=0%m1% ) ) //same detecting for minutes..
echo %m% : %m1% // display time ss:mm


ping 1.1.1.1 -n 1 -w 100 > nul //stop the file for 100 (1 secs)
goto clock // go to your looping clock

但问题是不是从00到10计数....它每次都在08重置.. 这是关于enabledelayedexpansion ?? 如何修复/简化它而无需下载外部.exe文件放入文件夹

奇怪的是以下代码可以正常运行

if %m% LSS 10 ( echo 0%m%) else ( echo %m%)

但是如果我像顶部一样使用它我需要复杂来写几分钟甚至几个小时..

1 个答案:

答案 0 :(得分:2)

批处理软件时钟:

@echo off
setlocal
set "s=0"
set "m=0"
:clock
set "mm=00%m%"
set "ss=00%s%"
echo %mm:~-2% : %ss:~-2%
set /a "s+=1"
if %s% gtr 59 set "s=0" & set /a "m+=1"
ping 192.0.2.2 -n 1 -w 1000 >nul
goto clock
endlocal

注意:这个时钟并不完全准确,并且很可能会像依赖ping超时的任何软件解决方案一样衰减。衰减将由处理器花费超过一秒钟来处理所有命令。如果处理器处于负载状态并且批处理脚本优先级正常,则可以很容易地看到这一点。但是,在大多数处理器没有负载的情况下,时钟应该以足够的精度执行几分钟和几秒钟。 请注意。


关于Ping延迟:

请注意,我已经编译了ping命令用于等待和延迟功能。

成功方法:

PING 127.0.0.1 -n 6 >nul
  • 5秒延迟

工作原理:

  • ping6 echos发送到环回IP地址。
  • ping在每个回声总计5秒之间暂停1秒钟。
  • -n不能少于2,否则不会有延迟。
  • 此方法需要快速响应的有效IP地址。
    • 这就是选择localhost loopback IP 127.0.0.1的原因。
  • 精确到秒。最短延迟1秒。

超时方法:

PING 192.0.2.2 -n 1 -w 200 >nul
  • 200毫秒延迟

工作原理:

  • ping发送1个echo -n 1,请求超时为200毫秒-w 200
  • (仅调整-w值,并在使用此方法时将-n保留为1
  • 此方法需要未使用的IP地址。因为它需要不能导致延迟。
    • 唯一可以保证未使用的IP地址是用户可以控制的私有IP地址范围,或者TEST-NET范围。
  • 精确到几百毫秒。最小延迟为100毫秒。

专用IP地址范围:

  

互联网号码分配机构(IANA)保留了    以下三个私有互联网IP地址空间块:

 10.0.0.0        -   10.255.255.255  (10/8 prefix)
 172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
 192.168.0.0     -   192.168.255.255 (192.168/16 prefix)
  • 根据我的经验,10.1.1.1只是一个通常未使用的公共私有IP地址。这就是为什么我在选择私有IP地址时更喜欢它。否则,请使用TEST-NET IP地址。

TEST-NET IP地址范围:

  

192.0.2.0/24 - 此块被指定为“TEST-NET”以供使用    文档和示例代码。它经常与之配合使用    供应商和协议中的域名example.com或example.net    文档。此块中的地址不应出现在    公共互联网。

公共IP地址:

截至2010年1月,IP地址1.1.1.1 has been assigned to APNIC by the IANA。这意味着无法再将其保证为未使用的IP地址。


参考


更新

  • 阐述时间衰减通知。
  • 切换到TEST-NET IP地址。
  • 添加了有关ping和IP地址的信息。