中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 诚心向大家求一个批处理 上一主题 | 下一主题
wtosky
新手上路





积分 6
发帖 2
注册 2007-8-13
状态 离线
『楼 主』:  诚心向大家求一个批处理

求一个批处理大概意思是这样:因为我要执行的这个软件在执行完后就会自动把当前计算机名和当前的时间写进服务器上的EsState.txt里面,所以这个批处理就只是获取当前的机器名和当前的日期再跟EsState.txt里的相同的机器名所对应的日期做计算,日期大于5天就执行程序否则退出.
  

获取本机的机器名和年月日,和服务器上的一个EsState.txt文件里的机器名所对应的年月日对比,

如果当前计算机的年月日比服务器上的EsState.txt里所对应机器名的年月日大于5天就执行COPY.exe否则退出。

EsState.txt里的内容如下:

[PC070]
任务最后完成时候=2007-7-16 8:08:01
[PC069]
任务最后完成时候=2007-7-16 8:18:59
[PC073]
任务最后完成时候=2007-7-16 8:17:24
[PC075]
任务最后完成时候=2007-7-16 8:18:57
[PC072]
任务最后完成时候=2007-7-16 8:17:42
[PC060]
任务最后完成时候=2007-7-17 5:42:22
[PC077]
任务最后完成时候=2007-7-16 9:04:22
[PC004]
任务最后完成时候=2007-7-21 6:18:06



辛苦了,谢谢!


2007-8-13 19:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yovie
初级用户




积分 92
发帖 42
注册 2007-8-14
来自 重庆市巫山县
状态 离线
『第 2 楼』:  


@echo off & setlocal ENABLEEXTENSIONS

for /f "tokens=1 delims=:" %%i in ('findstr /i /n "^\[%computername%\]$" EsState.txt') do set n=%%i
for /f "skip=%n% tokens=2 delims== " %%i in (EsState.txt) do set day=%%i&&goto :next
:next
for /f "tokens=2,3 delims=-" %%i in ("%day%") do set mon=0%%i&&set dat=0%%j
set day=%day:~0,5%%mon:~-2%-%dat:~-2%

::::Will Sort ::::
call :Date2Day %date:~0,10% sdays
set /a sdays-=5
call :Day2Date %sdays% difdate
if "%day%" LSS "%difdate%" copy.exe
goto :EOF

:Date2Day
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (
  set yy=%%a & set mm=%%b & set dd=%%c
)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %2=%j%&goto :EOF

:Day2Date
setlocal ENABLEEXTENSIONS
set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%-%mm%-%dd%&goto :EOF
[ Last edited by yovie on 2007-8-14 at 04:14 PM ]

2007-8-14 15:41
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (109232975)  编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 3 楼』:  

请楼主把标题写清楚!!!!



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2007-8-14 16:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blueskyjing
新手上路





积分 7
发帖 6
注册 2006-1-12
来自 564564
状态 离线
『第 4 楼』:  

二楼的不知是否加点注解,有些地方看不明白,
如果EsState.txt和COPY.exe都不在本机,而在运程机器的的个共享文件夹里面。
那么这个路径要怎么改呀?
如果日期不是大于5天、而是大于10天有在那里改?

2007-8-17 11:00
查看资料  访问主页  发短消息 网志  OICQ (36216)  编辑帖子  回复  引用回复

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


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



论坛跳转: