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截取时间的代码也是我抄袭的别人的
http://www.cn-dos.net/forum/viewthread.php?tid=40226&fpage=2

是里面二楼的代码,这里谢谢这位兄了

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

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

作者: 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 ]