我做的乙個系統需要定時的備份資料庫資料,用的是批處理實現
需求:每月23號0點生成,資料庫備份資料dmp檔案,如果目錄中有new.dmp 改名為old.dmp,然後生成新的new.dmp
實現:1 backup.bat檔案
if exist c:/new.dmp goto new
goto export
:export
echo database person exporting...
exp system/system@241_person full=y file=c:/new.dmp
goto end
:new
echo new
if exist c:/old.dmp goto delete
goto rename
:delete
echo delete old.dmp...
del c:/old.dmp
goto rename
:rename
echo rename ...
ren c:/new.dmp old.dmp
goto export
:end
echo export data ok.
exit
2 at.bat檔案:windows伺服器定時執行backup.bat
net start schedule
at 00:00 /every:23,24 d:/datafile/person/backup.bat
3 伺服器開機時自動加入2中的定時服務
在登錄檔 hkey_local_machine/software/microsoft/windows/currentversion/run
加入 c:/at.bat 完成
----------------------------------批處理常用命令--------------------------------
echo、@、call、pause、rem 是批處理檔案最常用的幾個命令,我們就從他們開始學起。 echo 表示顯示此命令後的字元
echo off 表示在此語句後所有執行的命令都不顯示命令列本身
@ 與echo off相象,但它是加在其它命令列的最前面,表示執行時不顯示命令列本身。
call 呼叫另一條批處理檔案(如果直接呼叫別的批處理檔案 ,執行完那條檔案後將無法執行當前檔案後續命令)
pause 執行此句會暫停,顯示press any key to continue... 等待使用者按任意鍵後繼續
rem 表示此命令後的字元為解釋行,不執行,只是給自己今後查詢用的
例:用edit編輯a.bat檔案,輸入下列內容後存檔為c:/a.bat,執行該批處理檔案後可實現:將根目錄中所有檔案寫入 a.txt中,啟動ucdos,進入wps等功能。
批處理檔案的內容為: 檔案表示:
echo off 不顯示命令列
dir c:/*.* >a.txt 將c盤檔案列表寫入a.txt
call c:/ucdos/ucdos.bat 呼叫ucdos
echo 你好 顯示"你好"
pause 暫停,等待按鍵繼續
rem 使用wps 注釋將使用wps
cd ucdos 進入ucdos目錄
wps 使用wps
批處理檔案中還可以像c語言一樣使用引數,這只需用到乙個引數表示符%。
%表示引數,引數是指在執行批處理檔案時在檔名後加的字串。變數可以從 %0到%9,%0表示檔名本身,字串用%1到%9順序表示。
例如,c:根目錄下一批處理檔名為f.bat,內容為 format %1
則如果執行c:/>f a: 則實際執行的是format a:
又如c:根目錄下一批處理檔案的名為t.bat,內容為 type %1 type %2
那麼執行c:/>t a.txt b.txt 將順序地顯示a.txt和b.txt檔案的內容
特殊命令
if goto choice for 是批處理檔案中比較高階的命令,如果這幾個你用得很熟練,你就是批處理檔案的專家啦。 if 表示將判斷是否符合規定的條件,從而決定執行不同的命令。 有三種格式:
1、if "引數" == "字串" 待執行的命令
引數如果等於指定的字串,則條件成立,執行命令,否則執行下一句。(注意是兩個等號)
如if "%1"=="a" format a:
2、if exist 檔名 待執行的命令
如果有指定的檔案,則條件成立,執行命令,否則執行下一句。如if exist config.sys edit config.sys
3、if errorlevel 數字 待執行的命令
如果返回碼等於指定的數字,則條件成立,執行命令,否則執行下一句。如if errorlevel 2 goto x2 dos程式執行時都會返回乙個數字給dos,稱為錯誤碼errorlevel或稱返回碼
goto 批處理檔案執行到這裡將跳到goto 所指定的標號處, 一般與if配合使用。 如:
goto end
:end
echo this is the end
標號用 :字串 表示,標號所在行不被執行
choice 使用此命令可以讓使用者輸入乙個字元,從而執行不同的命令。使用時應該加/c:引數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end
將顯示defrag,mem,end[d,m,e]?
例如,test.bat的內容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag 應先判斷數值最高的錯誤碼
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:/dos/defrag
goto end
:mem
mem
goto end
:end
echo good bye
此檔案執行後,將顯示 defrag,mem,end[d,m,e]? 使用者可選擇d m e ,然後if語句將作出判斷,d表示執行標號為defrag的程式段,m表示執行標號為mem的程式段,e表示執行標號為end的程式段,每個程式段最後都以goto end將程式跳到end標號處,然後程式將顯示good bye,檔案結束。
for 迴圈命令,只要條件符合,它將多次執行同一命令。
格式for [%%f] in (集合) do [命令]
只要引數f在指定的集合內,則條件成立,執行命令
如果一條批處理檔案中有一行:
for %%c in (*.bat *.txt) do type %%c
含義是如果是以bat或txt結尾的檔案,則顯示檔案的內容。
nt server的at命令詳解
windows nt server的服務程式管理器只能設定某項服務的啟動方式(自動、手動、失效),而在日常管理工作中,常常要求某項服務能定時開啟、關閉。windows nt server提供的at命令能夠實現這一點。利用它可實現ras服務定時開關,其具體步驟如下:
1.在「設定」「控制面板」「服務」中啟動schedule服務,並將其啟動方式屬性設定為自動。 或用net start schedule命令啟動
2.在命令視窗中使用at命令設定服務程式的定時啟動關閉。
at命令的格式如下:
at [//computername] time [/interactive] [/every:date[,]|next:date[,]] ″command″
引數含義:
無引數:顯示所有已設定的計畫命令情況。
//computername:指示執行該命令的計算機名,如省略則在本機執行。
time:命令執行時間
/interactive:當程式執行時是否與正在登入的使用者進行互動。
/every:date[,]:指定程式執行的日期(如每週
二、三:/every:t,w),每月1,2號:/every:1,2)。
next:date[,]:指定程式下一次執行的日期。
″command″:定時執行的windows nt命令,程式,批處理。
at [//computername] [[id][/delete][/yes]]
引數含義:
id:分配給計畫命令的識別號碼,可由不帶引數的at命令查到。
/delete:取消指定的計畫命令,如果id省略的話,取消所有的計畫命令。
/yes:強制對所有的取消詢問回答yes。
如每日19:00啟動,次日7:30關閉ras服務的命令如下:
at 19:00 /every:m,t,w,th,f,s,su net start ″remote access server″
at 7:30 /every:m,t,w,th,f,s,su net stop ″remote access server″
批處理檔案備份資料庫表
最近在定時備份mysql資料庫時使用到了批處理檔案進行定時匯出,並儲存為sql指令碼。之所以沒有採用資料庫備份計畫,是因為我要備份資料庫中的指定的兩個表,並且不是整表備份,是根據條件進行篩選後備份。原理是呼叫mysql的mysqldump.exe。此處是在批處理裡面定義函式backup進行備份,這裡...
定時備份資料庫SQL
if exists select from dbo.sysobjects where id object id n dbo sp backupdatabase pmsod and objectproperty id,n isprocedure 1 drop procedure dbo sp back...
每天定時備份資料庫
每天定時備份mysql資料庫任務,刪除指定天數前的資料,保留指定天的資料 需求 1,每天4點備份mysql資料 2,為節省空間,刪除超過3個月的所有備份資料 3,刪除超過7天的備份資料,保留3個月裡的 10號 20號 30號的備份資料 建立shell檔案 vim backup mysql.sh my...