中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]想让BAT每分钟运行一次,不过在0X:XX会出错。。。
作者:
标题: [已结]想让BAT每分钟运行一次,不过在0X:XX会出错。。。 上一主题 | 下一主题
kyqm
初级用户




积分 152
发帖 42
注册 2004-3-10
状态 离线
『楼 主』:  [已结]想让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 ]

2009-1-6 16:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kyqm
初级用户




积分 152
发帖 42
注册 2004-3-10
状态 离线
『第 2 楼』:  

这段代码里面用for截取时间的代码也是我抄袭的别人的
http://www.cn-dos.net/forum/viewthread.php?tid=40226&fpage=2

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

2009-1-6 16:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 3 楼』:  

计划任务设置成每分钟运行一次就可以了
哪需要这么麻烦




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-1-6 16:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

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



2009-1-6 19:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kyqm
初级用户




积分 152
发帖 42
注册 2004-3-10
状态 离线
『第 5 楼』:  

用计划任务,或者schtasks命令,还有用VBS都能达到目的

不过用计划任务或者schtasks命令会在“计划任务)”文件夹留下痕迹,
用VBS会在任务管理器留下痕迹,

还就是用AT隐蔽性稍好一点(当然dos中at一下可以看到)

就用at的话这段代码应该如何改呢?

2009-1-7 10:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kyqm
初级用户




积分 152
发帖 42
注册 2004-3-10
状态 离线
『第 6 楼』:  

那我查查资料先

2009-1-7 10:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 7 楼』:  

贴个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




简单!简单!再简单!
2009-1-7 12:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  Re 5楼

at无法直接实现每分钟运行一次
schtasks可以
先看看帮助吧



2009-1-7 13:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mountvol
初级用户





积分 186
发帖 117
注册 2006-8-14
状态 离线
『第 9 楼』:  

既然用了VBS何不在VBS里面用wscript.sleep来延时呢?

2009-1-7 14:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kyqm
初级用户




积分 152
发帖 42
注册 2004-3-10
状态 离线
『第 10 楼』:  

已经自行解决,涉及到字符串与数值的转换

如果想知道怎么改的朋友请查资料。

呵呵。

[ Last edited by kyqm on 2009-1-14 at 14:51 ]

2009-1-14 14:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: