[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
1,任务计划推荐从控制面板的“任务计划”中直接创建。
2,如果想用命令完成,推荐使用 Schtasks 。
推荐从图形界面创建,因为 at 过于简单,而 Schtasks 不支持“仅在登陆后运行”,即跳过帐户密码设置一问题...同时,图形界面的“任务计划”更加强大。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 hanyeguxing 于 2011-8-11 16:09 编辑

回复 11# canyuexiaolang


    时间运算要注意10进制、12进制、24进制、60进制的问题。

回复 10# er8852973


    你的代码从设计思路上就有问题,必须重新设计,详细代码如下。


回复 10# er8852973


    代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p t=请输入24小时制时间,例如00:08:
  3. set/a t=1%t:~0,2%*60+1%t:~-2%-6100
  4. for /l %%a in (1 1 4) do (
  5.     set/a t+=1,s=100+t/60%%24,f=100+t%%60
  6.     at !s:~-2!:!f:~-2! /interactive "%ProgramFiles%\TTPlayer\TTPlayer.exe"
  7. )
复制代码
或:
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p t=请输入24小时制时间,例如00:08:
  3. for /l %%a in (1 1 4) do (
  4.     set/a t=1%t:~0,2%*60+1%t:~-2%-6100+1*%%a,s=100+t/60%%24,f=100+t%%60
  5.     at !s:~-2!:!f:~-2! /interactive "%ProgramFiles%\TTPlayer\TTPlayer.exe"
  6. )
复制代码
1,t+=1 或 1*%%a 每次时间+1分钟
2,注意:当时间超过24小时,则自动减24小时。如果不需要此功能,则去掉 %%24
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 hanyeguxing 于 2011-8-12 04:57 编辑

回复 14# er8852973


    在批处理中,不能直接将不同进制的混合数字,例如时间进行直接运算,以1楼代码为例,除了延迟的问题,还有:
当时间为12:08、12:09时,set b=%t:~-2%,截取为08、09,set /a f=b+1,此时set /a将出现错误
当时间为12:59、时,set b=%t:~-2%,截取为59,set /a f=b+1,运算结果将为12:60,这个时间 at 是无法接受的
因为set /p t= 使得 t是固定的,4次循环时set b=%t:~-2%时b都是一个值,set /a f=%b%+1 和set s=%t:~0,2% 和 set t=%s%:%f% 的结果都将是同一个结果,那么4次循环的意义何在呢?
for 下直接跟标签,将导致at执行5次,而不是4次
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 hanyeguxing 于 2011-8-12 12:07 编辑

回复 20# er8852973


    以当前时间为12:09为利
set/a t=1%t:~0,2%*60+1%t:~-2%-6100
%t:~0,2%截取前两为为12
1%t:~0,2%前面加1,变成112
1%t:~-2%截取前后位并在前面加1得到109
前面加1是为了使得09和08这样的数字变成109和108以解决的问题
小时前加1导致多出100小时,分钟前加1导致多出100分钟,需要再减去,总计6100分钟
set/a t+=1,s=100+t/60%%24,f=100+t%%60
t+=1以分钟为单位的数字加1
s=100+t/60%%24将此数字转换为小时,即取商的整数部分.其中t/60获得就是此数字,%%24对小时进行修正,例如把24修正为0 。 100+将结果修正为3位数,例如把12或8变成112或108,以在以后截取后两位
f=100+t%%60将获取分钟余数,原理同上
!s:~-2!:!f:~-2!截取
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表