2011年6月18日 星期六

批次檔亂亂寫

最近幫忙出納組做備份(Access檔案備份)。
原本想說直接寫成windows service直接開機排程就好了。
無奈在自己電腦寫完測試完,拿到出納組的機房。
發現,這台電腦已經是四年前的機子了,並沒有支援.net framework 2.0
基於系統還是追求穩定就好,不要亂隨便更新,到時候不能RUN我就不知道該怎麼處理了。
所以退而求其次,念頭一轉,乾脆寫成批次檔就好。
因為檔案需要備份到G槽以及D槽,需要備份到backup裡創建一個當天日期的資料夾。
然後檢查是否有15天前的資料夾,如果有15天前的資料夾,進行刪除的動作。




@echo off
if exist D:\backup (
    echo 已有backup檔案夾
) else (
echo 現在開始建立
md D:\backup
)

rem %DATE%日期

if exist D:\backup\%date:~0,4%%date:~5,2%%date:~8,2% (
    echo D:\backup\%date:~0,4%%date:~5,2%%date:~8,2%
) else (
    echo 現在開始建立
    md D:\backup\%date:~0,4%%date:~5,2%%date:~8,2%
)


rem 備份檔案
echo 現在開始備份D槽
COPY C:\project\FundSearch\App_Data\DB1.mdb D:\backup\%date:~0,4%%date:~5,2%%date:~8,2%\fcbfund.mdb


echo wscript.echo dateadd("d",-15,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
if %m% LSS 9 set m=0%m%
if %d% LSS 9 set d=0%d%
if exist D:\backup\%y%%m%%d% (
    echo 現在開始刪除D:\backup\%y%%m%%d%
    rmdir /s/q D:\backup\%y%%m%%d%
)

沒有留言:

張貼留言