好吧我试着让一个批处理文件每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%)
但是如果我像顶部一样使用它我需要复杂来写几分钟甚至几个小时..
答案 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 127.0.0.1 -n 6 >nul
工作原理:
ping
将6
echos发送到环回IP地址。ping
在每个回声总计5秒之间暂停1秒钟。-n
不能少于2,否则不会有延迟。127.0.0.1
的原因。超时方法:
PING 192.0.2.2 -n 1 -w 200 >nul
工作原理:
ping
发送1个echo -n 1
,请求超时为200毫秒-w 200
。-w
值,并在使用此方法时将-n
保留为1
。专用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地址。
ping
和IP地址的信息。