Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 2 decades ago

如何撰寫windows 的batch 檔(贈20點)

想請問熟悉寫batch 檔的前輩們,請問哪裡有書或是網址可以參考撰寫windows 的 batch 檔,如撰寫autoexec.bat 的batch檔,因為不知所使用的相關函數,請求大大能提供網址或是書籍,供小弟參考!謝謝

3 Answers

Rating
  • Favorite Answer

    早期在DOS系統工作下,都可能需要使用批次檔來執行電腦工作,當文字介面的系統逐漸被Windows、Unix系統(圖形介面)所取代時,現今一般使用電腦的人,可能也不是很清楚什麼是批次檔,我們今天就來介紹何謂批次檔。

    批次檔是一種文字檔案(ASCII檔案),由一連串的MS-DOS命令所組成的。批次檔的命名規則與一般檔案相同,但其副檔名固定為".BAT",即"將一連串的命令"儲存在檔案中,該批次檔的指令可無限制的重覆使用,永遠得到相同的執行結果。究竟批次檔又該如何使用呢?以下介紹批次檔的常用指令。

    批次檔的常用指令如下:

    一、 ECHO

    在正常的情況下,批次檔中的每道命令執行前都會先出現螢幕上。有了ECHO命令,就可以任意控制是否列印出命令列。

    用法:在批次檔中鍵入echo on/off ,on:表示要印出命令列,off:則不印出命令列,若要禁止批次檔的命令顯示在螢幕上,則使用隱藏echo off(@ECHO OFF),用法在命令列的開頭上加上@符號

    Ex:

    @echo off 表示資料隱藏

    echo .... 測試ECHO指令

    echo .... 請稍後

    echo .... 完成.....

    二、 代換參數

    代換參數的標記是一個百分號(%)再跟著一個阿拉伯數字,最多可使用10個代換參數,這些變數的值,則由呼叫批次檔的命令所指定。

    Ex:

    @echo off

    echo .... 測試代換參數指令

    echo .... 請稍後

    echo .... 完成.....

    echo %1 %2 %3 %4

    三、 PAUSE:是暫停批次檔的執行。當MS-DOS執行到PAUSE時就暫時中止目前的工作,並印出下列訊息:

    press any key to contunue ……

    Ex:

    @echo off

    echo .... 測試代換參數指令

    echo .... 請稍後

    echo .... 完成.....

    echo %1 %2 %3 %4

    pause

    echo %5 %6

    四、 REM(REMark)用來在批次檔執行中顯示某些訊息,用法是在批次檔中鍵入rem,後面跟著所要顯示的字串

    Ex:

    @echo off

    echo .... 測試代換參數指令

    echo .... 請稍後

    echo .... 完成.....

    rem 下面指令,開始做代換參數

    echo %1 %2 %3 %4

    pause

    echo %5 %6

    五、 IF

    IF命令在批次檔中用來測試特定的條件,以決定是否執行某些命令。絛件的型態分為四種:

    (1) IF EXIST

    此條件是用來檢查某一檔案是否存在,若存在則條件成立,便執行指定的命令

    Ex:

    @echo off

    if exist test1.bat type test1.bat

    echo 執行程式結束

    2) IF String1 = = String2(= = 表相等性的比較)

    Ex:

    @echo off

    echo .... 測試IF指令

    echo %1

    if %1 == a goto first

    if %1 == b goto second

    if %1 == c goto three

    :first

    echo 執行first (a)

    goto finish

    :second

    echo 執行second (b)

    goto finish

    :three

    echo 執行three (c)

    goto finish

    :finish

    (3) IF ERRORLEVEL

    ERRORLEVEL是由MS-DOS所管理的一個系統變數,目的是監視所有錯誤發生的情況。(類似ErrorMessage)

    (4) IF NOT

    IF NOT是當測試條件不成立時才執行後面命令

    Ex:

    @echo off

    if not exist test1.bat type test1.bat

    echo 執行程式結束

    六、 GOTO

    GOTO命令在批次檔中用來轉移控制權,可以指示批次檔跳至某一標記(line label)由一個冒號(:)跟著字元符號所組成的;label也可使用代換變數

    Ex:

    goto first 或 goto %1

    七、 FOR

    FOR命令允許批次檔中的其他命令,可以重覆地執行

    for %%a IN (file1 file2 file3) DO del %%a

    虛擬變數必須以兩個百分號(%%)起頭,in後面著參數列,do後面跟著要執行的命令

    Ex:

    @echo off

    echo .... 測試FOR指令

    echo .... 請稍後

    echo .... 完成.....

    echo ....

    for %%a IN (test_a.bat test_b.bat test_c.bat) do copy %%a prn

    八、 SHIFT

    SHIFT命令允許在批次檔的起動命令中,使用超過10以上的實際參數

    (%0~%9)

    九、 CALL

    模組化的程式設計,是將一個完整的程式分割成一個個獨立的模組(module),每個模組負責一項功能

    Ex:

    @echo off

    echo .... 測試CALL指令

    echo .... 請稍後

    echo %1 %2

    call test_b

    echo %3 %4

    echo 程式模組已執行完畢 (test_a.bat)

    @echo off

    echo 執行test_b程式

    echo 即將執行test_c .....

    call test_c

    echo 執行test_b程式完畢~~~ (test_b.bat)

    @echo off

    echo 執行test_c程式

    if exist test2.bat type test2.bat

    echo 執行test_c程式完畢~~~ (test_b.bat)

    執行 test_a

  • 1 decade ago

    雖然批次檔越來越少用

    但微軟有越來越多的擴充指令可以使用

    若有興趣 可以到微軟網站查詢喔(http://www.microsoft.com/technet/prodtechnol/windo...

    另外,在安裝軟體的時後,也可以看一下內含的批次檔 也可以學到很多~~

  • 繁榮
    Lv 6
    2 decades ago

    誰說Windows不執行Autoexec.bat了,win95,win98可是會用執行勒....

    win98現在還有很多人在用ㄟ

Still have questions? Get your answers by asking now.