推薦學(xué)習(xí)dos和bat的批處理的教程
更新時間:2007年02月28日 00:00:00 作者:
一些危險的命令會被某些有心人寫進批處理文件中去,在網(wǎng)上四處傳播搞破壞,例如在.bat中寫進:
deltree -y c:/
接下來的事情就是你趕緊拿條手巾擦眼淚吧。從這個意義上說它比病毒還要惡毒。
類似的,在.hlp(幫助文件)、.pif(指向DOS的快捷方式)、.lnk(WINDOWS快捷方式)這些文件中也可以寫入危險的命令,如果不小心執(zhí)行了那就危險了。防范以上調(diào)用DOS命令進行破壞的文件,被動的做法是通過將format、deltree這類命令改名換姓。
(一)應(yīng)用DOS重定向功能
DOS的標(biāo)準(zhǔn)輸入輸出通常是在標(biāo)準(zhǔn)設(shè)備鍵盤和顯示器上進行的, 利用重定向,可以方便地將輸入輸出改向磁盤文件或其它設(shè)備。如在批處理命令執(zhí)行期間為了禁止命令或程序執(zhí)行后輸出信息而擾亂屏幕, 可用DOS重定向功能把輸出改向NUL設(shè)備(NUL不指向任何實際設(shè)備): C:\>COPY A.TXT B.TXT > NUL。
命令執(zhí)行結(jié)束不顯示"1 file(s) copied"的信息。有的交互程序在執(zhí)行時要求很多鍵盤輸入, 但有時輸入是固定不變的, 為加快運行速度, 可預(yù)先建立一個輸入文件,此文件的內(nèi)容為程序的鍵盤輸入項, 每個輸入項占一行。假如有一個程序ZB, 其輸入項全部包括在文件IN.DAT中, 執(zhí)行 C:\>ZB NUL 程序就自動執(zhí)行。
(二)應(yīng)用DOS管道功能
DOS的管道功能是使一個程序或命令的標(biāo)準(zhǔn)輸出用做另一個程序或命令的標(biāo)準(zhǔn)輸入。如把DEBUG的輸入命令寫入文件AAA, 用TYPE命令通過管道功能將AAA的內(nèi)容傳輸給DEBUG, 在DEBUG執(zhí)行期間不再從控制臺索取命令參數(shù), 從而提高了機器效率。命令為: C:\>TYPE AAA|DEBUG >BBB。
(三)子程序
在一個批處理文件可用CALL命令調(diào)用另一個子批處理文件, 當(dāng)子批文件執(zhí)行結(jié)束后,自動返回父批文件, 繼續(xù)向下執(zhí)行。如: A.BAT B.BAT,A調(diào)用B,A.BAT內(nèi)容如下:
@ECHO OFF
CALL B
CD \BASIC
BASICA BG
@ECHO ON
(四)菜單選擇功能
DOS功能調(diào)用31H或4CH所提供的一字節(jié)的返回碼, 通過批處理子命令I(lǐng)F和ERRORLEVEL對返回碼進行處理, 可達到自動執(zhí)行一批命令的目的。在批處理文件中實現(xiàn)高級語言所有的菜單提示功能, 使批處理文件變得更靈活方便。先用DEBUG建立一個菜單驅(qū)動程序MENU.COM,對應(yīng)地編寫一個批處理文件LG.BAT。具體內(nèi)容和方法見下表:
DEBUG
-A
-166C:0100 MOV DX,111
-166C:0103 MOV AH,09
-166C:0105 INT 21
-166C:0107 MOV AH,01
-166C:0109 INT 21
-166C:010B MOV AH,4C
-166C:010D INT 21
-166C:010F INT 20
-166C:0111 DB '******************************'0D 0A
-166C:0131 DB '* 1.Turbo Pascal 5.00 *'0D 0A
-166C:0151 DB '* 2.Turbo Basci 1.00 *'0D 0A
-166C:0171 DB '* 3.Turbo Prolog 2.00 *'0D 0A
-166C:0191 DB '* 4.Turbo C 2.00 *'0D 0A
-166C:01B1 DB '* 0.Exit *'0D 0A
-166C:01B1 DB '******************************'0D 0A
-166C:01F1 DB 'Your choice(0..4) : '24 0D 0A 1A
-166C:0209
-R CX
CX 0000
:108
-N MENU.COM
-W
Writing 0108 bytes
-Q
@ECHO OFF:
START
CLS
MENU
IF ERRORLEVEL 52 GOTO C
IF ERRORLEVEL 51 GOTO PRO
IF ERRORLEVEL 50 GOTO BAS
IF ERRORLEVEL 49 GOTO PAS
IF ERRORLEVEL 48 GOTO EX
CLS
GOTO START
AS
CD \TP5.00
TURBO
CD \
GOTO START
:BAS
CD \TB
TB
CD \
GOTO START
RO
CD \TPROLOG
PROLOG
CD \
GOTO START
:C
CD \TURBOC
TC
CD \
GOTO START
:EX
@ECHO ON
執(zhí)行LG, 屏幕左上角出現(xiàn)一個菜單, 并提示用戶輸入選擇, 當(dāng)選擇的功能執(zhí)行結(jié)束,重新返回主菜單請求選擇, 直到選擇"0"號功能, 程序結(jié)束返回DOS。
(五)應(yīng)用命令處理程序完成大量重復(fù)工作
DOS提供調(diào)用次級命令程序的方法, 可實現(xiàn)與子程序等效的功能, 在MS DOS3.3以前的DOS版本下非常有用。如你有一批FORTRAN源程序需要編譯, 首先編寫兩個批文件MAKEOBJ.BAT、C.BAT, 然后執(zhí)行MAKEOBJ, 即可把當(dāng)前目錄下的所有擴展名為.FOR的FORTRAN源程序編譯成OBJ文件。這種方法迅速正確, 人機交互少, 減輕了程序員的的大量勞動。
MAKEOBJ.BAT C.BAT
@ECHO OFF
ECHO COMPILE FORTRAN PROGRAMS.
FOR %%A IN (*.FOR) DO COMMAND /C C %%A
ECHO FINISH !
@ECHO ON @ECHO OFF
ECHO ------ COMPILE %1 ------
FOR1 %1; >NUL
FOR2 >NUL
@ECHO ON
注意:批處理的教學(xué)
choice是個外部命令,在2000和XP中推薦用SET,set是內(nèi)部命令;如果你的批處理在98、xp下都要用,那么應(yīng)先用環(huán)境變量檢測OS版本,再分支選用choice或set。
FOR1 和 FOR2 應(yīng)是兩個程序的名字。
相關(guān)文章
利用批處理BAT生成隨機數(shù)實現(xiàn)隨機網(wǎng)站內(nèi)容
今天想用批處理(BAT)的方式隨機打開網(wǎng)站某頁面,基目的是刷網(wǎng)站的PV2013-05-05批處理應(yīng)用:根據(jù)文件內(nèi)容進行重命名操作
批處理應(yīng)用:根據(jù)文件內(nèi)容進行重命名操作...2007-04-04bat/cmd批處理連接SqlServer數(shù)據(jù)庫查詢腳本
這篇文章主要介紹了bat/cmd批處理連接SqlServer數(shù)據(jù)庫查詢腳本,需要的朋友可以參考下2015-04-04通過批處理bat設(shè)置系統(tǒng)環(huán)境變量的實現(xiàn)代碼
這篇文章主要介紹了通過批處理bat設(shè)置系統(tǒng)環(huán)境變量的實現(xiàn)代碼,需要的朋友可以參考下2014-07-07