@echo on
cmd
因为你这文件名为cmd,批处理代码后面的cmd就又重新运行你个批处理了。下面这些后缀文件类型都不用写后缀名的,所以你代码中的cmd相当于cmd.bat。
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
这些后缀运行的优先顺序从前往后,属于系统变量PATHEXT,你在cmd下输入set就可以查看到。。
另:系统还有一个path路径的变量设置,也就是在不输入程序路径的时候,它首先在批处理当前路径寻找cmd,找到后运行,如果当前目录没有,刚到下面位置去自动寻找,优先顺序从前往后:
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
这个你在cmd下输入set也能查看到。。
其实cmd.exe这个命令在system32文件夹下,写代码的时候简写为cmd,你写在代码里面,同时批处理名也是cmd的话。系统就会优先运行当前这个批处理,
所以才会出现你说的情况。。
能做到...= =
@echo off
rem 这个不解释
set /a mintr=%time:~3,2%+20
rem 获取当前时间,单位分钟
rem 20 分钟内。批处理可不知道这个概念
rem 后面的加20分钟,可以改,就是当前时间再过多少分钟
set minh=%time:~0,2%
rem 获取当前时间,单位小时
if %mintr% geq 60 (
set /a mintr-=60
set /a minh+=1
)
rem 判断如果分钟大于或等于60,就减去60,小时在加1
at %minh%:%mintr%
rem 这个后面加上你要执行的命令
pause
rem 这个不解释
高手来,,我不清楚
批处理做不到
用vbs吧
s=timer+60*20
if timer <> s then .... else wscript.quit