批處理文件內幕

1、什麼叫作批處理文件?  批處理文件(文件名爲*.BAT)就是將一些經常使用的命令寫入一個文本文件內。當咱們要使用這個文件時,只要鍵入批處理文件的文件名,批處理文件就會依照文件中的命令來執行所有或者是一部分指定要執行命令。如此咱們即可簡化咱們的工做,而不用每一次都須要手動鍵入不少的命令來執行一些動做。  一個批處理文件的創建,由於必須是一個文本文件;因此只要有字處理功能的軟件,均可用來創建此文本文件,例如EDIT,WORDSTAR,PE2……等程序皆可。  2、什麼是自動批處理?  自動批處理文件(AUTOEXEC.BAT),是批處理文件的一種,處於引導盤(通常爲C盤或A盤)的根目錄下,當每一次開機時,系統將自動到引導盤的根目錄下查找它,若是找到了就自動執行它。  3、批處理文件中可使用哪些命令?  只要可以在DOS的系統提示符下執行的命令,或應用軟件執行文件名稱,都能寫在批處理文件中,批處理命令也可包含在內,詳細以下:  1.DOS的內部命令  2.DOS的外部命令  3.COM的命令文件  4.EXE的可執行文件  5.批文件命令:CALL,ECHO,FOR,GOTO,IF,PAUSE,REM,SHIFT  6.其餘的批文件  4、批處理文件命令  BATCH DOS 命令1.功能: 批處理命令是存儲在一個特殊的批處理文件(Batch File)中的DOS命令。當執行一個批處理文件時,DOS將依次執行文件內所存儲的各項DOS命令。  2.格式:[d:][path][filename.bat][parameters]  3.說明: ①、批處理文件的擴展名應爲.BAT。  ②、當執行批處理文件時,您可將參數(parameters)傳給一名稱爲file-name.bat的文件,給予不一樣的參數,將能夠執行相似的工做。  ③、若是要中止批處理文件的動做,只要按下ctrl+break二鍵,便可中止正在執行的命令,而且出現下述信息:  terminate batch job?(Y/N)  若是按下Y鍵就能夠終止批處理文件的執行工做。若是按N鍵,那系統將會繼續執行其它的批處理文件中的命令。  4.範例: ①、若是在test.bat文件內包括一些替換參數,將使得在執行時,可使用您所提供的值來替換它。例如:  copy %1.mac %2.mac  type %2.prn  type %0.bat  %0,%1,%2這三個能夠被代換的參數,於執行時將使用批處理文件時的三個參數順序依次來代換之。  %0參數永遠使用批處理文件的文件名來取代。  在一個批處理文件內最多可使用10個替換參數(%0到%9)  ②、當您要執行test.bat的批處理文件時,系統將依照%1,%2等順序給予適當的參數。例如:  A:\>test a:prog1 b:prog2  因而系統將以test表明%0,以a:\prog1表明%1,以b:\prog2表明%2所以在執行此命令時,就至關於直接在鍵盤上依次輸入下述DOS命令同樣:  copy a:\prog1.mac b:\prog2.mac  type b:\prog2.prn  typt test.bat  ③、批處理文件亦可以使用DOS的環境變量。環境變量於使用時先後都要加上一個%符號。例如要取用DOS PATH的值,您必需輸入%PATH%。下例是先假設將變量destination定義爲一臺磁盤驅動器代碼:  SET destination=C:因而執行如下所述命令  ECHO dot here>%destination%FILE1 (必須在批處理文件中執行)  執行以後,C磁盤的file1文件內將會存在dot here字符串。  CALL 批處理文件命令1.功能: 您能夠在批處理文件裏面調用令一個批處理文件,執行完畢後在繼續執行原來的這個批處理文件內的剩餘命令。  2.格式:CALL[d:][path][filename.bat][argument]  3.說明: ①、[argument]參數:指定經由批處理文件所要求的任何命令行信息;它可包含開關選擇項、文件指定、變量%1至%9以及其它像%baud%這樣的變量。  ②、CALL命令能夠在批處理文件的任何位置,只要執行時不要超過內存容量便可。  ③、批處理文件也能夠調用本身自己,但必須肯定最後仍能夠結束纔好。  ④、CALL命令不能夠與重定向輸入字符(如:<)以及數據管道字符(如:|)合用。  4.範例: ①、現有main.bat批處理文件內容以下所述:  REM I am ist batch file  REM go to 2nd batch file  CALL a2  REM now come back!  REM END  ②、其中A2.bat批處理文件內容以下所述:  REM I am 2nd batch file  REM I will back to main batch file  ③、執行時  A:\>main (執行main.bat)  A:\>REM I am ist batch file (main.bat前兩行)  A:\>REM go 2nd batch file  A:\>CALL A2 (由main.bat中調用a2.bat)  A:\>REM I am 2nd batch file (執行a2.bat文件的內容)  A:\>REM I will back to main batch file  A:\>REM now come back! (a2.bat結束後返回main.bat  A:\>REM END 繼續執行其他命令)  CHOICE選擇鍵組命令 批處理文件命令1.功能: 此命令將顯示指定的提示並暫停讓用戶在指定的鍵組中作選擇,而後返回一個ERRORLEVEL參數給批處理程序。您只能在批處理程序中使用本命令。  2.格式:[d:][path]CHOICE[/C[:]KEYS][/N][/S][/T[:]C'nn][test]  3.說明: ①、/C[:]keys參數:在提示中指定容許可用的鍵。當顯示時,keys將以逗黠分開並放置於括弧中,並且其後將會加上問號。若是您並沒有指定/C參數,則CHOICE將會使用YN來當作默認值。冒號(:)是無關緊要的。  ②、/N參數:使CHOICE不顯示提示,可是提示前的文字仍會顯示。若是您指定此參數,則指定鍵仍然有效。  ③、/S參數:將致使CHOICE會區分大小寫。若是此參數未被指定,則CHOICE將接受用戶指定的任意鍵值的大寫或小寫。  ④、/T[:]C'nn參數:在默認指定鍵以前,使CHOICE在指定的秒數中暫停。/T參數可用的值以下所示:  c---nn秒後,指定的字符將爲默認的。字符必須是/c參數中所指定的選擇組。  nn--指定暫停的秒數。可接受0到99之間。若是指定0,則在默認以前將不會有暫停。  ⑤、[test]參數:您想在提示符前顯示的字符。假如您包含斜線(\)作爲提示前字符的一部分時,則必須加引號。若是您並沒有提示字符,則CHOICE將僅顯示提示符。您所分派的第一個鍵將爲1,第二個鍵將爲2……餘此類推。若是用戶按下了一個未分派到的鍵,則CHOICE將發出一警告聲響。若是CHOICE檢測到一個錯誤的狀況,那麼它將返回一ERRORLEVEL值爲255的值;若是使用者按下了Crtl+Break二鍵或Ctrl+c二鍵,則CHOICE將返回一ERRORLEVEL值爲0的值。  四、範例: 這個CHIOCE命令最有用的地方就是用在批處理文件設計中。它將讓用戶按下指定的按鍵後,執行某一段在批處理文件中的命令。例如:下面是包含CHOICE命令的TEST.BAT文件內容:  @echo off  cls  echo. ┐  echo 1.defragment │  echo 2.MSD ├?顯示這些字符  echo 3.Anti-Virus │  echo. ┘  choice/c:123/t:1,10 將出現要您選擇1或者2或者3的提示字符,若是等10秒後,用戶還沒有鍵入1或2或3中任一字符,則自動鍵入1。  if errorlevel 1 goto defragmant 當用戶在上述鍵入1時,將尋找:defragment段來執行defrag程序。  if errorlevel 2 goto msd 當用戶在上述鍵入2時,將尋找:msd段來執行msd程序。  if errorlevel 3 goto av 當用戶到上述鍵入3時,將尋找:av段來執行msav程序。  :defragment ┐  defrag ├:defragment段  goto end ┘  :msd ┐  msd ├:msd段  goto end ┘  :av ┐  msav ├:av段  goto end ┘  :end 結束  ECHO 批處理文件命令1.功能: 容許批處理文件執行時顯示或不顯示命令自己,但對於命令的執行則無影響。  2.格式:ECHO [on|off]  ECHO [message]  3.說明: ①、ECHO命令在啓動或系統重置時,均默認爲on,而可將每一批處理命令在執行同時,顯示在輸出設備(屏幕)上。  ②、當ECHO命令設定爲off時在批處理命令執行時,將不顯示該命令內容,但不影響執行結果。  ③、若是您指定了ECHO message,則不管是ECHO on 或ECHO off,message信息皆會顯示在標準輸出設備(屏幕)上。  ④、若是ECHO後面未加任何字符,如on、off或message,則只會顯示出ECHO當前是在on或off的狀態。  4.範例:  REM 範例:①  ECHO off  ECHO piping symbol"\"ECHO redirect symbol">/"  「/」及「>」在DOS命令裏有其特殊的意義,若是要讓DOS不處理時,則需使用雙引號括起來。  REM 範例: ②  @ECHO off  @REM THIS LINE WILL NOT DISPLAY  REN THIS LINE WILL BE DISPLAYED  @file1  上例中,命今前有@符號,其命令行自己將不會被顯示出來,其他的命令行都將被顯示出來。  REM 範例:③  @ECHO off  DIR *.TXT  執行的結果以下:  Volume in drive A is ABC  Directory of A:TEST1 TXT 13 06-26-90 4:03P  TEST2 TXT 13 06-26-90 4:03P  TEST3 TXT 13 06-26-90 4:04P  3 File(s) 310272 bytes free  連ECHO off 命令自己亦不顯示。  FOR 內部命令、批處理文件命令1.功能: 可讓咱們反覆地執行DOS的命令。  2.格式: 在批處理文件中:  FOR [%%c] in(set) DO [command][arguments]  在MS-DOS命令行中:  FOR [%c] in(set) DO [command][arguments]  3.說明: ①、[%%c]或[%c]參數:將順序地獲得(set)這個集合中的各個元素來做爲它的值,當獲得一個值以後,就執行COMMAND此一DOS命令。  ②、(set)中可包含*、?、/等通配符,那麼[%%c]參數就會被設置成磁盤中可以匹配引指定的第一個文件名稱,同時亦可以使用路徑。  ③、[command]參數:指定您但願執行在每一包含在(set)中文件命令。  ④、[arguments]參數爲:[command]參數指定選擇項。  4.範例: ①、若是一批處理文件中含有下述命令:  FOR %%F IN (TEST1.DBF TEST2.DBF TEST3.DBF) DO DEL %%F  則執行時,將有下述的結果:  DEL TEST1.DBF  DEL TEST2.DBF  DEL TEST3.DBF  ②、若是批處理文件中含有下述的命令:(在TEST.BAT內)  FOR %%F IN (%1 %2 %3 %4 %5) DO DEL %%F  則在執行時執行下列命令,將有與前項相同的結果:  A>TEST TEST1.DBF TEST2.DBF TEST3.DBF  ③、若是欲在DOS下直接執行此命令,則%%c只要改成%c的形式便可。  GOTO 內部命令、批處理文件命令1.功能: 將DOS控制權轉移到某標號(LABEL)中,繼續日後面執行。在批處理文件中的一個標號是以一個冒號(:)開頭,其後跟着一個標號名稱(LANEL NAME)所組成。  2.格式:GOTO label  3.說明: ①、GOTO label會形成接着執行標號label那一行的命令。  ②、若是label未被定義,則當前這一個批處理文件的動做就會中止,並顯示label notfound 信息。  ③、批處理文件中的標號名稱是由前面8個字來定義的。  ④、批處理文件的標號是永遠不會顯示出來的。因此未引用的標號可用來做爲一些註解。  4.範例: TEST.BAT 文件,內容以下:  @ECHO OFF  GOTO SECOND  :FIRST  REM I AM FIRST  :SECOND  REM I AM SECOND  執行結果以下:  REM I AM SECOND  IF 內部命令、批處理文件命令1.功能: 使DOS能夠有條件地執行命令。  2.格式:IF[not] errorlevel number command  IF[not] [string1]==[string2] command  IF[not] exist filename.ext command  3.說明: ①、[not]參數:是一個可選擇使用的條目,使用時會將其後麪條件的結果再求一個相反的結果。  ②、errorlevel number:errorlevel 是DOS產生出來的一個退出碼。若是退出碼大於或等於number(指定一個十進制值),則此條件成立,系統便可執行後面指定的command。  注意:測試退出碼時要由大到小來測試,由於退出碼只要測到大於或等於指定的值時,該條件即成立。  ③、[string1]==[string2]:string1及string2皆爲字符的數據,英文字母的大小寫將視爲不一樣。當[string1]及[string2]內容徹底相同時,則此條件成立,並執行後面指定的command。此條件中的等號(=)必需要有兩個。  ④、exist filename.ext:若是指定的文件存在時,則所得的結果爲「真」,不然爲「假」。若爲真,則系統即執行後面指定的command。  ⑤、IF命令爲一個分支命令。condition是一個條件,command是根據條件成立時纔去執行的命令。若不成立時則往下繼續執行次一個批處理文件命令。  ⑥、IF errorlevel 主要是用於配合本身的程序,並於執行完畢後設置一個錯誤代碼(errorcode),以便與IF errorlevel命令一塊兒使用。  4.範例:REM 範例: ①  @ECHO OFF MYPROG1  IF ERRORLEVEL 2 GOTO 2  IF ERRORLEVEL 1 GOTO 1  GOTO EXTI  :L1  ECHO DATA ERROR  GOTO EXIT  :L2  ECHO PROGRAM CANCEL  :EXIT  上例中MYPROG1爲一程序,在執行時若是發生退出碼時,則表示該程序未執行成功。  REM 範例:②  @ECHO OFF  IF "%1"=="" GOTO EXIT  IF %1==1 GOTO L1  IF %1==2 GOTO L2  GOTO EXIT  :L1  ECHO I AM L1  GOTO EXIT  :L2  ECHO I AM L2  :EXIT  本例中,""(空字符串)、一、2是指定要與%1參數比較訴字符串。  REM 範例:③  @ECHO OFF  IF NOT EXIST PE2.EXE GOTO EXIT  PE2  GOTO END  :EXIT  ECHO PE2.EXE NOT FOUND!  :END  本例中,先檢查PE2.EXE文件是否存在,不存在時則顯示一個找不到的信息後結束。若是找到時則執行該程序後結束。  PAUSE 內部命令、批處理文件命令1.功能: 暫時中止系統命令的執行並顯示下列信息:  strike a eky when ready......  2.格式:PAUSE  3.說明: ①、PAUSE命令能夠在DOS執行一個命令時暫停,使您有機會來更換盤片。按下任何一個鍵後,便可讓DOS繼續執行下一個命令。  ②、執行PAUSE命令時,系統會暫停;若是您要終止執行此批處理文件,則您可按下Ctrl+Break二鍵,接頭按下Y,便可終止執行,但若是於此時按下N,則系統將繼續執行其它命令。  4.範例: PAUSE1.BAT 文件,內容以下:  @ECHO OFF  @ECHO I am first  PAUSE  @ECHO ON  @ECHO I am second  @ECHO Please put a new diskette into drive A  PAUSE  則其執行結果以下所示:  A:\>PAUSE1  I am first  strike any key when ready...  I am second  Please put a new diskette into drive A  strike any key when ready...  REM 批處理文件命令、配置文件命令1.功能: 能夠在配置文件(CONFIG.SYS)或批處理文件(.BAT)中加上註解說明。  2.格式:REM [comment]  3.說明: ①、[comment]參數:表示註解行,不會被看成命令執行。  ②、您可在配置文件或批處理文件中將命令的功能註解加註在其中,以供往後引用。  ③、CONFIG.SYS文件中的REM與在批處理文件中REM,皆可爲註解的命令行。可是在批處理文件中,REM會被顯示出來,而在CONFIG.SYS的REM命令行在起動DOS時並不會被顯示出來。  4.範例:REM this is a sample CONFIG.SYS FOR DBASE 3  FILES=25  BUFFERS=20  SHIFT 內部命令、批處理文件命令1.功能: 使得DOS命令行上可使用超過10個(%0到%9)以上的可替代參數。  2.格式SHIFT  3.說明 1.可替代參數的編號是%0--%9,若是要在一個命令行使用超過10個能夠被代換的參數,則您可以使用SHIFT命令來突破此限制。  2.每當執行SHIFT一次,全部命令行上的全部參數將向左移動一位。 %1的內容將爲%2的內容所取代...,%9內容則由新的參數遞補。  3.%0表示批處理文件自己的名稱,永遠不變,因此每次執行時您能夠加上 9個參數在批處理文件名後。若要增長一個參數,則您將須要使用這個SHIFT命令來移位,纔可取得第十個參數。  4.範例 1.SHIFT.BAT文件,內容以下:  @ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9  SHIFT  @ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9  SHIFT  @ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9  2.執行結果以下:  A:\>SHIFT 1 1 2 3 4 5 6 7 8 9 10 11(前後跟隨11個參數)  1 2 3 4 5 6 7 8 9 (取最前面9個參數)  A:\>SHIFT (移位)  2 3 4 5 6 7 8 9 10 (取另外9個參數)  A:\>SHIFT (移動)
相關文章
相關標籤/搜索