每天必要運行的工作,可以排程化?

想要將每天必做的工作,加以排程化處理,是一個突然間的念頭。
可能是每天的常態性工作吧,所以才不以為意。
說到這兒,回憶起偶而會對 隔壁單位 的同事說:常態性的工作若是可以調整成電腦處理,而不去做,那麼作死自己也沒有人會可憐你 !!

沒想到,這事也落在自個的身上,真該自省了。

事情是這樣了,
每天一定要做 前天 資料庫的備份工作。而這備份工作也早已經寫成批次檔案,只要每天一上工,去點擊它 運行之。
說到這,大伙一定想即然是電腦做,點擊後不就沒事了 ??
事實上,每次的備份工作約要從 09:00 ~ 11:30,如此長的工作時間,一定也會影響到同一時間公司同事使用網路頻寬的效率。

所以,想調整:
1. 在非上班時段,運行資料庫的備份,由電腦啟動排程管控
2. 改善備份的效率
3. 一上班,就可以測試備份資料庫的完整性,減化備份的工作。

依據上述的構想,
在原本每天執行備份的電腦上,設定工作排程機制,讓它每天運作 ScheduleBatch.bat 檔案;
而該程式就會呼叫 前一天 的備份批次檔:備份bak單檔批次檔_20120605.bat

ScheduleBatch.bat  ============= 程式內容
@echo off
echo wscript.echo dateadd("d", -1, date) > %tmp%\tmp.vbs

for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k

rem    if %m% LSS 9 set m=0%m%
rem    if %d% LSS 9 set d=0%d%

@echo on
echo 備份bak單檔批次檔_%y%%m%%d%.bat
=========================================

接下來,稍做批次檔運作指令的說明,
echo wscript.echo dateadd("d", -1, date) > %tmp%\tmp.vbs
使用 VBScript 功能,在電腦 %tmp% 的目錄中,產生 tmp.vbs,其內容是 wscript.echo dateadd("d", -1, date)

接下來是使用 cscript 來運行 tmp.vbs,分別得到 年、月、日 等三個變數 %y%、%m%、%d%
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k

最後,就是執行備份批次檔
echo 備份bak單檔批次檔_%y%%m%%d%.bat

沒有留言: