Board logo

标题: [已结]想让BAT每分钟运行一次,不过在0X:XX会出错。。。 [打印本页]

作者: kyqm     时间: 2009-1-6 16:34    标题: [已结]想让BAT每分钟运行一次,不过在0X:XX会出错。。。
想让BAT每分钟运行一次,不过在0X:XX会出错。。。 ____________________________________________________ 用计划任务,或者schtasks命令,还有用VBS都能达到目的 不过用计划任务或者schtasks命令会在“计划任务”文件夹留下痕迹, 用VBS会在任务管理器留下痕迹, 还就是用VBS和AT结合隐蔽性稍好一点(当然dos中at一下可以看到) 那么这段代码应该如何改呢? ____________________________________________________ 下面是我的测试new.bat
@echo off
set /a step=1

for /f "tokens=1,2 delims=:." %%a in ("%time%") do (
   set /a t=100%%a%%100, h=100%%b%%100+%step% 
)
set /a s=(t+h/60)%%24,f=h%%60
set s=0%s%&set "f=0%f%"

set /a nian=%date:~0,4%,yue=%date:~5,2%,ri=%date:~8,2%
echo %nian%年%yue%月%ri%日 %s:~-2%:%f:~-2% >>C:\test\test.txt

at /d /y
at %s:~-2%:%f:~-2% /interactive  C:\test\new.vbs
exit
new.vbs
set Cleaner=createobject("wscript.shell")
Cleaner.run "cmd /c C:\test\new.bat",vbhide
我平日批处理接触不多,这段代码里面用for截取时间的代码也是我抄袭的别人的。没理解透。 拜托兄弟们帮我改改。 谢谢! [ Last edited by kyqm on 2009-1-14 at 14:50 ]

作者: kyqm     时间: 2009-1-6 16:37
这段代码里面用for截取时间的代码也是我抄袭的别人的 www.cn-dos.net/forum ... 是里面二楼的代码,这里谢谢这位兄了

作者: yishanju     时间: 2009-1-6 16:50
计划任务设置成每分钟运行一次就可以了 哪需要这么麻烦

作者: HAT     时间: 2009-1-6 19:37
别去理解了,因为那个代码是错的。 如需计算1分钟以后的时间,可参考:Ritchie Lawrence 批处理函数库中英文版 www.cn-dos.net/forum ...

作者: kyqm     时间: 2009-1-7 10:02
用计划任务,或者schtasks命令,还有用VBS都能达到目的 不过用计划任务或者schtasks命令会在“计划任务)”文件夹留下痕迹, 用VBS会在任务管理器留下痕迹, 还就是用AT隐蔽性稍好一点(当然dos中at一下可以看到) 就用at的话这段代码应该如何改呢?

作者: kyqm     时间: 2009-1-7 10:04
那我查查资料先

作者: terse     时间: 2009-1-7 12:43
贴个n分钟后 日期时间 暂测试没问题
@echo off
for /f "tokens=2 delims==" %%i in ('wmic path Win32_OperatingSystem get localdatetime /value') do set Ymd=%%i
   for /f "tokens=1-3" %%i in ("%Ymd:~,4% %Ymd:~4,2% %Ymd:~6,2%") do set /a Y=%%i,M=1%%j%%100,D=1%%k%%100,JD=365*(Y-1)+(Y-1)/4-(Y-1)/100+(Y-1)/400+1721425
   if %M% equ 1 (set/a JD+=D)else if %M% equ 2 (set/a JD+=D+31)else set/a i="!(Y%%4)&!(!(Y%%100))|!(Y%%400)",JD+=13*(M+1)/5-7+(M-1)*28+D+i
   set/p S=请输入分时数:
   for /f "tokens=1,2 delims=:" %%i in ('time /t') do set/a S+=100%%j%%100,H=100%%i%%100*60+s
   set/a T=H/1440,S=H%%60,H=H/60%%24
   if %t% geq 1 call:BY Terse
   for %%i in (M D H S) do call set %%i=0%%%%i%%
   echo %Y%年%M:~-2%月%D:~-2%日 %H:~-2%时%S:~-2%分
   pause&exit
:BY Terse
   set/a JD+=T,w=(JD+1)%%7
   if %JD% leq 2299160 set/a JD-=10
   set /a JD+=68569,N=(4*JD)/146097,JD-=(146097*N+3)/4,I=(4000*JD+1)/1461001,JD-=(1461*I)/4-31,J=(80*JD)/2447,D=JD-(2447*J)/80,JD=J/11,M=J+2-(12*JD),Y=100*(N-49)+I+JD

作者: HAT     时间: 2009-1-7 13:09    标题: Re 5楼
at无法直接实现每分钟运行一次 schtasks可以 先看看帮助吧

作者: mountvol     时间: 2009-1-7 14:22
既然用了VBS何不在VBS里面用wscript.sleep来延时呢?

作者: kyqm     时间: 2009-1-14 14:49
已经自行解决,涉及到字符串与数值的转换 如果想知道怎么改的朋友请查资料。 呵呵。 [ Last edited by kyqm on 2009-1-14 at 14:51 ]