Board logo

标题: 诚心向大家求一个批处理 [打印本页]

作者: wtosky     时间: 2007-8-13 19:15    标题: 诚心向大家求一个批处理

求一个批处理大概意思是这样:因为我要执行的这个软件在执行完后就会自动把当前计算机名和当前的时间写进服务器上的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



辛苦了,谢谢!

作者: yovie     时间: 2007-8-14 15:41

@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 16:16
请楼主把标题写清楚!!!!
作者: blueskyjing     时间: 2007-8-17 11:00
二楼的不知是否加点注解,有些地方看不明白,
如果EsState.txt和COPY.exe都不在本机,而在运程机器的的个共享文件夹里面。
那么这个路径要怎么改呀?
如果日期不是大于5天、而是大于10天有在那里改?