摘要:[CMD]
潛水很久了=.=
發一下最近寫的小東西好了
之前就一直在想說,假如說能把所有設定都寫入一個檔案
再用一些方法來判斷,那該有多好
可能也是我還太嫩==想了很久才想說來用這個方法
也順便把 他備份的狀態一起寫進去了 備份不管有沒有完成都會產生 log
避免說設定排程後,不確定有沒有完整備份完畢
好吧,看程式碼吧~
backup.bat
cls
COLOR 70
MODE CON COLS=35 LINES=9
@echo off
setlocal enabledelayedexpansion
echo 自我檢測中....
set today=%date:~0,4%%date:~5,2%%date:~8,2%
goto test
:testok
echo 正在取得目前系統參數.......請稍等
if not exist copyconfig.ini goto error
for /f "tokens=2 delims='='" %%i in ('type copyconfig.ini^|findstr "save="') do set save=%%i
for /l %%i in (1,1,15) do (
for /f "tokens=2 delims='='" %%j in ('type copyconfig.ini^|findstr "aps%%i="') do set aps%%i=%%j)
for /l %%i in (1,1,15) do (
for /f "tokens=2 delims='='" %%j in ('type copyconfig.ini^|findstr "pos%%i="') do set pos%%i=%%j)
for /l %%i in (1,1,15) do (
for /f "tokens=2 delims='='" %%j in ('type copyconfig.ini^|findstr "server%%i="') do set server%%i=%%j)
for /f "tokens=2 delims='='" %%i in ('type copyconfig.ini^|findstr "in="') do set in=%%i
echo 五秒後開始備份,取消請關閉視窗
@ping -n 1 -w 5000 126.0.0.1 >nul 2>nul
@echo ----------------%today%開始備份---------------- >> .\log.txt
echo 正在備份APS................請稍等
for /l %%j in (1,1,15) do (
@xcopy /i /k /y /c !aps%%j!\ParkPayment.MDB %save%\%today%\aps%%j\ >nul 2>nul
@xcopy /i /k /y /c !aps%%j!\Report.MDB %save%\%today%\aps%%j\ >nul 2>nul
@xcopy /i /k /y /c !aps%%j!\ParkConfig.MDB %save%\%today%\aps%%j\ >nul 2>nul)
set nowtime=%time:~0,5%
@echo %today% %nowtime% APS備份完成 >> .\log.txt
echo 正在備份pos................請稍等
for /l %%j in (1,1,15) do (
@xcopy /i /k /y /c !pos%%j!\ParkPayment.MDB %save%\%today%\pos%%j\ >nul 2>nul
@xcopy /i /k /y /c !pos%%j!\Report.MDB %save%\%today%\pos%%j\ >nul 2>nul
@xcopy /i /k /y /c !pos%%j!\ParkConfig.MDB %save%\%today%\pos%%j\ >nul 2>nul)
set nowtime=%time:~0,5%
@echo %today% %nowtime% POS備份完成 >> .\log.txt
echo 正在備份server.............請稍等
for /l %%j in (1,1,15) do (
@xcopy /i /k /y /c !server%%j!\MergeData.mdb %save%\%today%\server%%j\ >nul 2>nul
@xcopy /i /k /y /c !server%%j!\ParkServer.MDB %save%\%today%\server%%j\ >nul 2>nul
@xcopy /i /k /y /c !server%%j!\ParkServerConfig.mdb %save%\%today%\server%%j\ >nul 2>nul
@xcopy /i /k /y /c !server%%j!\Pidc.mdb %save%\%today%\server%%j\ >nul 2>nul
@xcopy /i /k /y /c !server%%j!\Report.MDB %save%\%today%\server%%j\ >nul 2>nul)
set nowtime=%time:~0,5%
@echo %today% %nowtime% SERVER備份完成 >> .\log.txt
echo 正在備份in.................請稍等
for /l %%j in (1,1,15) do (
@xcopy /i /k /y /c !in%%j!\ParkConfig.MDB %save%\%today%\in%%j\ >nul 2>nul
@xcopy /i /k /y /c !in%%j!\ParkInOut.MDB %save%\%today%\in%%j\ >nul 2>nul)
set nowtime=%time:~0,5%
@echo %today% %nowtime% IN備份完成 >> .\log.txt
set nowtime=%time:~0,5%
@echo ----------------%today%結束備份---------------- >> .\log.txt
@echo. >> .\log.txt
echo 全部備份完成,10秒後自動關閉視窗!
@ping -n 1 -w 10000 126.0.0.1 >nul 2>nul
exit
:error
echo.
echo.
echo 錯誤!找不到copyconfig.ini
echo 請確認是否在同一資料夾下!!
echo.
echo.
set nowtime=%time:~0,5%
@echo ----------------%today%備份失敗---------------- >> .\log.txt
@echo %today% %nowtime% 找不到copyconfig.ini >> .\log.txt
@echo ------------------------------------------------ >> .\log.txt
@echo. >> .\log.txt
pause
exit
:test
set VAR=myrest
if "%VAR%" == "myrest" (
set VAR=myrest1
if "!VAR!" == "myrest1" goto :testok
)
echo.
echo 錯誤!自我檢測失敗
echo 有可能因為系統為%OS%
echo 導致無法啟用延遲環境變數
echo.
set nowtime=%time:~0,5%
@echo ----------------%today%備份失敗---------------- >> .\log.txt
@echo %today% %nowtime% 無法啟用延遲環境變數 >> .\log.txt
@echo ------------------------------------------------ >> .\log.txt
@echo. >> .\log.txt
pause
exit
copyconfig.ini
[備份存檔位置]
save=c:\test2
[APS網路位置]
aps1=c:\test1
aps2=c:\test3
aps3=
aps4=
aps5=
aps6=
aps7=
[POS網路位置]
pos1=c:\pos
pos2=
pos3=
pos4=
[SERVER網路位置]
server1=c:\server
server2=
[出入口網路位置]
in=c:\in