无语。。。
不过就代码上来看,个人认为问题应该出在时间上,批处理似乎并不能很精确地处理时间,而在本例代码中时间精确到了微秒,估计是这方面出了问题。更改代码如下:
:: Scheduler.cmd - V1 - 批处理代码对抗调度程序
:: Will Sort - 2006-06-28 - CMD@WinXP
@echo off & setlocal
if not exist battle\ md battle
copy test1.cmd battle>nul
copy test2.cmd battle>nul
cd battle
:Wait1
if 1%time:~6,2% GEQ 157 goto Wait1
set /a sec=1%time:~6,2%+3
set wartime=%time:~0,6%%sec:~1,2%
echo Wartime:%wartime%
start test2.cmd %wartime% test1.cmd 2>nul
start test1.cmd %wartime% test2.cmd 2>nul
:Wait2
if exist test1.cmd if exist test2.cmd goto wait2
:Finish
if not exist test1.cmd echo test1 fail!
if not exist test2.cmd echo test2 fail!
cd..
pause
test1 & test2:
@echo off
:Wait
if not "%time:~0,8%"=="%1" goto wait
echo %time%.
echo Start %0 at %time% ...
:Start
del %2
if exist %2 goto start
测试了4次,其中test1获胜一次,test2获胜二次,平一次(意料之外……)。
之所以对平一次感到意外,原因如下:
test1:
@echo off
del test2.cmd
test2:
@echo off
del test1.cmd
用鼠标同时选中二文件,然后按下回车键,两文件同时运行(看起来如此),结果每次test2都被test1给挂了。当然,就算把两个文件的排列顺序颠倒,然后再选取执行结果也是一样,看来文件名占了很大的优势啊。
进而想到在前面的测试中出现平手的情况,只能感慨CMD用在处理循环上的时间实在是太长了。
另:关于循环延时,想起了以前的一个贴子:
从一个GIF文件引起的麻烦
后记:大家无聊的时候都做甚么?有无若willsort兄这般拿CMD来打发时光?老手与新手,高手与菜鸟的区别就是从这里开始的。
鄙视自己一个先,居然无聊的时候打 傲剑狂刀。