在 DOS 下可用 .bat 自定選單如下:
![](http://delphi.ktop.com.tw/loadfile.php?TOPICID=16286029&CC=364231)
對於 DOS 遊戲機可是很好用的喔,這樣的系統還在很多親友的舊電腦中使用
![]()
因為可以階層式 >
< src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=16286342&CC=364238">
可自定 TimeOut 顯示 Lines 的螢幕保護程式
![](http://delphi.ktop.com.tw/loadfile.php?TOPICID=16286655&CC=364245)
這算是我蠻早的作品了,而當時程式功力有限,還去買了第三波出的選單函式庫(我也買了第三波的影像動畫函式庫但沒有用它作出什麼東西...),才把以上的工具作出來,雖然後來也有自己作選單函式庫:
■【發表】【DOS】【TC】日記帳、經費管理、文字流覽器原始碼
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=42468
但是並沒有改寫 Batmenu 因為我認為 Batmenu 已算是完整了
![]()
在此檔案內包含:
>
以下是 > < class="code">
┌─────────────────────────────────┐
│ ▁▂▃▄▅▆▇█▇▆ 增 強 批 次 檔 ▆▇█▇▆▅▄▃▂▁ │
│ │
│ 2.02 版 Free Registered 1991-92 by 李 棟 樑 │
└─────────────────────────────────┘ 命令列用法 : BATMENU [批次檔名稱] [功能] [批次檔名稱] 批次檔案名稱 (包含路徑及檔案全名) [功能] 改變初始設定值 (可以省略)
/B:nnnn 設定緩衝區為 nnnn 位元組
預設值為 6400 位元組 (最大為 64K)
/R:nnn 設定最大 REM BAT/ 之行數為 nnn 行
預設值為 512 行 (最大為 32K) 批次檔格式 : BATMENU 會讀取批次檔中以 REM BAT/ 開頭之行,作為各種參數之設定,
以及選項之內容,用以區別批次檔中其他之註解,其參數如下: rem bat/英文開始 或 rem bat/ENGLISH_BEGIN
在此參數行下的 rem bat/ ,其後面的文字即為英文選項之內容,
直到 rem bat/英文結束 或 rem bat/ENGLISH_END 為止。 rem bat/英文結束 或 rem bat/ENGLISH_END
參考 rem bat/英文開始 。 rem bat/中文開始 或 rem bat/CHINESE_BEGIN
在此參數行下的 rem bat/ ,其後面的文字即為中文選項之內容,
直到 rem bat/中文結束 或 rem bat/CHINESE_END 為止。 rem bat/中文結束 或 rem bat/CHINESE_END
參考 rem bat/中文開始 。 rem bat/靠左 或 rem bat/LEFT
設定選項資料靠左顯示。 rem bat/靠右 或 rem bat/RIGHT
設定選項資料靠右顯示。 rem bat/對中 或 rem bat/CENTER
設定選項資料對中顯示。此參數為預定值。 rem bat/跳離時間: 或 rem bat/跳離時間: 或 rem bat/EXITTIME:
設定若無鍵盤輸入的跳離時間,單位為秒,值為冒號後面之數值,請用半形。
預設值為 30 秒。若設定值為 0 則不會自動跳離。 rem bat/英文跳離值: 或 rem bat/英文跳離值: 或 rem bat/EEXITCODE:
設定無鍵盤輸入跳離時,在英文模式下,傳回DOS的 ExitCode ,
值為冒號後面之數值,請用半形。預設值為 0 。 rem bat/中文跳離值: 或 rem bat/中文跳離值: 或 rem bat/CEXITCODE:
設定無鍵盤輸入跳離時,在中文模式下,傳回DOS的 ExitCode ,
值為冒號後面之數值,請用半形。預設值為 0 。 rem bat/英文標題: 或 rem bat/英文標題: 或 rem bat/EHEADER:
設定此批次檔之標題,最長文字為 78 Columns ,顯示時自動對中。
可以沒有標題,無預設值。 rem bat/中文標題: 或 rem bat/中文標題: 或 rem bat/CHEADER:
設定此批次檔之標題,最長文字為 78 Columns ,顯示時自動對中。
可以沒有標題,無預設值。 rem bat/欄數: 或 rem bat/欄數: 或 rem bat/COLUMN:
設定選項顯示時之欄位,最大為 5 ,值為冒號後面之數值,請用半形。
預設值為 1 。 rem bat/結束 或 rem bat/END
設定結束,在此行以下之定設定參數及其他訊息指令將不讀取,如此可
增加執行速度。也可以不加此指令。 【 註一 】:參數之大小寫均可。
【 註二 】:若使用中文系統,目前此程式只支援倚天中文系統。 歡迎多加推廣及拷貝,謝謝您的愛用。 ================================================================================
批次檔之常用語法:
┌────┬────────┬────────────────────────┐
│ 指 令 │ 使 用 方 法 │ 說 明 │
├────┼────────┼────────────────────────┤
│@ │@指令 │在此符號開頭之指令不會顯示在螢幕上。 │
│echo │echo off │表示以下的指令不會顯示在螢幕上。 │
│ │echo on │表示以下的指令會顯示在螢幕上,即 C:\PATH> 的後面│
│ │echo 訊息字串 │在螢幕上顯示此訊息字串。 │
│if │if 條件 執行動作│當條件成立時,則執行動作。 │
│goto │goto 標記 │使批次檔跳到 :標記 ,再繼續執行批次檔。 │
│pause │pause 訊息字串 │批次檔暫停執行,等待按鍵,並顯示此訊息字串。 │
│%1 - %9 │ │分別代表在執行批次檔時,其後面所加的參數。 │
└────┴────────┴────────────────────────┘ 條件說明:
┌─────┬─────────┬──────────────────────┐
│ 條件指令 │ 使 用 方 法 │ 說 明 │
├─────┼─────────┼──────────────────────┤
│errorlevel│errorlevel 正整數 │當上一個在批次檔中被呼叫的執行程式的跳離值 │
│ │ │大於或等於此正整數時,條件成立。 │
│exist │exist 檔案 │若此檔案存在,則條件成立。 │
│== │變數一 == 變數二 │當變數一等於變數二時,條件成立。 │
│not │not 條件指令 │條件指令之反運算。 │
└─────┴─────────┴──────────────────────┘ 詳細說明及簡單範例:
一.由於 errorlevel 是在大於或等於其後面的數值時成立,所以其排列順序需顛倒,例:
------- begin of SCANV.BAT -----------------------------------------------------
@echo off
echo. The following demo is for 此批次檔範例程式須配合
echo. MeAfee Associates SCAN MeAfee 公司出的 SCAN 掃毒軟體。
scan %1 %2 %3 %4 %5 %6 %7 %8 %9
if '%1'=='' goto END
if errorlevel 4 goto 4
if errorlevel 3 goto 3
if errorlevel 2 goto 2
if errorlevel 1 goto 1
if errorlevel 0 goto 0 :0
echo. No viruses found. 恭喜您,沒有發現病毒。
goto END :1
echo. One or More viruses found. 發現病毒! 趕快用 CLEAN 清毒。
goto END :2
echo. Abnormal termination.(program error) 程式執行錯誤!請重新拷貝原版軟體。
goto END :3
echo. One or more uncertified files found. 發現未知病毒型態!快用 CLEAN 清毒。
goto END :4
echo. Ctrl-C or Ctrl-Break aborted scan. 使用者中斷 SCAN 的執行。
goto END :END
------- end of SCANV.BAT ------------------------------------------------------- 二. == , exist ,not ,pause ,%1 %2 ... 的使用:
------- begin of TYPE2.BAT -----------------------------------------------------
@echo off rem Check if Arguments present? 檢查是否有加參數?
if '%1'=='' goto NO_1
if '%2'=='' goto NO_2
goto BOTH :NO_1
echo.No Argument 1 少第一項參數,也許您應該看看使用說明。
echo.USAGE: 秀出使用說明
echo. TYPE2.BAT [arg1] [arg2]
echo.
echo. This batch file will print 此批次檔將秀出檔案arg1
echo file arg1 (and arg2) to screen (及檔案arg2)
goto END :NO_2
echo.No Argument 2 沒有第二項參數,表示只有第一項參數
rem Check if file EXIST ? 檢查檔案是否存在?
echo.IF not exist %1 goto NoFIle1 若檔案 %1 不存在,則跳到 NoFile1 的標記。
if not exist %1 goto NoFile1
echo.IF exist %1 type %1 若檔案 %1 存在,則將 %1 秀出。
if exist %1 type %1
goto END :BOTH
echo.Both Argument 1 and Argument 2 第一、二項參數都有
echo.IF not exist %1 goto NoFIle1 若檔案 %1 不存在,則跳到 NoFile1 的標記。
if not exist %1 goto NoFile1
echo.IF exist %1 type %1 若檔案 %1 存在,則將 %1 秀出。
if exist %1 type %1
pause Wait for User... 等您按個鍵再繼續...
echo.IF not exist %2 goto NoFIle2 若檔案 %2 不存在,則跳到 NoFile2 的標記。
if not exist %2 goto NoFile2
echo.IF exist %2 type %2 若檔案 %2 存在,則將 %2 秀出。
if exist %2 type %2
goto END rem Show the File message. 秀出檔案的訊息。
:NoFile1
echo.File %1 do not exist ! 檔案 %1 不存在!
goto END :NoFile2
echo.File %2 do not exist ! 檔案 %2 不存在!
goto END :END
------- end of TYPE2.BAT ------------------------------------------------------- 範例一:TEST1.BAT 使用 BATMENU.EXE , PARK.BAT , LINES.EXE
------- begin of TEST1.BAT -----------------------------------------------------
@echo off rem bat/eheader:Test BatMenu ... Frame Only ... for same English & Chinese Content
rem bat/exittime:10
rem bat/eexitcode:7 rem bat/english_begin
rem bat/Hyper Editor
rem bat/Personal Editor
rem bat/Lotus 123
rem bat/dBase III
rem bat/MS Window
rem bat/Scan Hard Disk
rem bat/Screen Protect
rem bat/Park Hard Disk
rem bat/english_end rem bat/中文標題:測試 BatMenu ... 只有基本架構 ... 此例之中英文內容相同
rem bat/跳離時間:10
rem bat/中文跳離值:7 rem bat/中文開始
rem bat/書 中 仙
rem bat/Lotus 123
rem bat/微軟視窗
rem bat/硬碟掃毒
rem bat/螢幕保護
rem bat/硬碟 Park
rem bat/中文結束 rem bat/end batmenu test1.bat
if errorlevel 6 goto PARK
if errorlevel 5 goto SCR
if errorlevel 4 goto SCAN
if errorlevel 3 goto MSWIN
if errorlevel 2 goto 123
if errorlevel 1 goto HE
if errorlevel 0 goto QUIT :PARK
call park.bat
pause
goto QUIT :SCR
lines.exe
goto QUIT :SCAN
echo.
echo.Running Scan Hard Disk ...
echo.
goto QUIT :MSWIN
echo.
echo.Running MS Window ...
echo.
goto QUIT :123
echo.
echo.Running Lotus 123 ...
echo.
goto QUIT :HE
echo.
echo.Running Hyper Editor ...
echo.
goto QUIT :QUIT
------- end of TEST1.BAT ------------------------------------------------------- 範例二:TEST2.BAT 使用 BATMENU.EXE , CHECKSCR.EXE , PARK.BAT , LINES.EXE
------- begin of TEST2.BAT -----------------------------------------------------
@echo off rem 重點提示:
rem 1.若想要此批次檔一直循環,則在呼叫其他批次檔時,請加上
rem call 的指令,如 call other.bat
rem 2.在中英文合用,且中英文內容又不同時,若有改變中英文模式,
rem 最好回到 CHECKSCR.EXE 之前,以便重新測試螢幕模式。
rem 3.在批次檔中,避免使用一些前兩位內碼或後兩位內碼為
rem 3C,3E,7C 的中文字,因為這三個字元在 DOS 下有
rem 重導、轉向輸出及連通等特殊功能,若使用這些中文字,通常將出現
rem Bad command or file name 之訊息。見註。
rem 在 REM 及 ECHO 後面亦不能使用以上之字元。 rem bat/eheader:Test BatMenu ... for defferent English & Chinese Content ... Over and Over
rem bat/exittime:10
rem bat/eexitcode:6 rem bat/english_begin
rem bat/ETen Chinese
rem bat/Hyper Editor
rem bat/Lotus 123
rem bat/MS Window
rem bat/Scan Hard Disk
rem bat/Screen Protect
rem bat/Park Hard Disk
rem bat/english_end rem bat/中文標題:測試 BatMenu ... 此例之中英文內容不相同 ... 反覆執行
rem bat/跳離時間:10
rem bat/中文跳離值:2 rem bat/中文開始
rem bat/書 中 仙
rem bat/Lotus 123
rem bat/跳離中文
rem bat/微軟視窗
rem bat/硬碟掃毒
rem bat/螢幕保護
rem bat/硬碟 Park
rem bat/中文結束 rem bat/結束 :HOME
checkscr nomsg
if errorlevel 10 goto CHINESE
if errorlevel 1 goto ENGLISH :ENGLISH
batmenu test2.bat
if errorlevel 7 goto E_PARK
if errorlevel 6 goto E_SCR
if errorlevel 5 goto E_SCAN
if errorlevel 4 goto E_MSWIN
if errorlevel 3 goto E_123
if errorlevel 2 goto E_HE
if errorlevel 1 goto E_ET
if errorlevel 0 goto E_QUIT :E_PARK
call park.bat
pause
goto ENGLISH :E_SCR
lines.exe
goto ENGLISH :E_SCAN
echo.
echo.Running Scan Hard Disk ...
echo.
pause
goto ENGLISH :E_MSWIN
echo.
echo.Running MS Window ...
echo.
pause
goto ENGLISH :E_123
echo.
echo.Running Lotus 123 ...
echo.
pause
goto ENGLISH :E_HE
echo.
echo.Running Hyper Editor ...
echo.
pause
goto ENGLISH :E_ET
echo.
echo.Will Calling ETen Chinese ...
echo.
echo.Please Set path to ET3.BAT
echo.
pause
call et3.bat
goto HOME :E_QUIT
goto QUIT :CHINESE
batmenu test2.bat
if errorlevel 7 goto C_PARK
if errorlevel 6 goto C_SCR
if errorlevel 5 goto C_SCAN
if errorlevel 4 goto C_MSWIN
if errorlevel 3 goto C_QET
if errorlevel 2 goto C_123
if errorlevel 1 goto C_HE
if errorlevel 0 goto C_QUIT :C_PARK
call park.bat
pause
goto CHINESE :C_SCR
lines.exe
goto HOME :C_SCAN
echo.
echo.執行 Scan Hard Disk ...
echo.
pause
goto CHINESE :C_MSWIN
echo.
echo.將跳離中文系統 ...
echo.
echo.在按鍵後,若無跳離中文系統,請將 PATH 增設至倚天中文
echo.
pause
etctl/c:iq
echo.
echo.Running MS Window ...
echo.
pause
goto HOME :C_QET
echo.
echo.將跳離中文系統 ...
echo.
echo.在按鍵後,若無跳離中文系統,請將 PATH 增設至倚天中文
echo.
pause
etctl/c:iq
goto HOME :C_123
echo.
echo.執行 Lotus 123 ...
echo.
pause
goto CHINESE :C_HE
echo.
echo.執行 書中仙編輯程式 ...
echo.
pause
goto CHINESE :C_QUIT
goto QUIT :QUIT
------- end of TEST2.BAT ------------------------------------------------------- 【 註 】:前兩位內碼或後兩位內碼為3C,3E,7C 的中文字,如
[BIG-5 碼] 會└ ....... Hex Dec Char DOS
3C == 60 == < 重導、轉向輸出
3E == 62 == > 重導、轉向輸出
7C == 124 == | 連通 在 BIG-5 碼中只有可能出現 7C 也就是 | ,在工會碼及倚天碼下,就都可能出現。 ================================================================================
商標聲明: 本說明所使用到已註冊之商標計有:
●ETen 為倚天公司的註冊商標。
●HE (書中仙) 為銳士公司的註冊商標。
●LOTUS 為 Lotus Development Corporation 的註冊商標。
●MS Window 為 Microsoft 公司的註冊商標。
●SCAN / CLEAN 為 MeAfee Associates 的註冊商標。 ================================================================================
bat 版本:
1.00 : △資料檔須外掛,使用說明放於執行檔中。
△最多可使用 85 個選項。
2.00 : △進入主選單後,將倚天中文糸統的訊息列隱藏。
△資料檔仍須外掛,但在同一資料檔中可同時有中英文資料,提供以下之指令:
bat/english_begin、 bat/英文開始、 bat/english_end、 bat/英文結束、
bat/chinese_begin、 bat/中文開始、 bat/chinese_end、 bat/中文結束。
--------------------------------------------------------------------------------
batmenu 版本:
1.99 : △內定最多可使用 512 個選項,使用者可自行更改。
△提供外部說明檔。
△將資料檔與批次檔結合,並提供以下之指令:
rem bat/english_begin、 rem bat/英文開始、
rem bat/english_end、 rem bat/英文結束、
rem bat/chinese_begin、 rem bat/中文開始、
rem bat/chinese_end、 rem bat/中文結束、
rem bat/left、 rem bat/靠左、
rem bat/right、 rem bat/靠右、
rem bat/center、 rem bat/對中、
rem bat/header:、 rem bat/標題:、 rem bat/標題:、
rem bat/column:、 rem bat/欄數:、 rem bat/欄數:。
△提供命令列之參數:
/B:nnnn set Buffer to nnnn bytes
default value is 6400 bytes
/R:nnn set maximum REM line number to nnn lines
default value is 512 lines 2.00 : (Nov 30,1992)
△若在中文糸統下,會將螢幕自動切換至中文模式的【英數】狀態。
△使用 8 號、9 號 中斷,記錄使用者按鍵的時間間隔,並在指定的時間後
自動跳離,以執行螢幕休息、PARK 或其他指定的程式。
△提供中、英文標題。
△提供詳細的說明檔,並含有範例程式及批次檔的常用的指令。
△將資料檔與批次檔結合,並新增以下之指令:
rem bat/end、 rem bat/結束、
rem bat/exittime:、 rem bat/跳離時間:、 rem bat/跳離時間:、
rem bat/EEXITCODE:、 rem bat/英文跳離值:、rem bat/英文跳離值:、
rem bat/CEXITCODE:、 rem bat/中文跳離值:、rem bat/中文跳離值:、
rem bat/eheader:、 rem bat/英文標題:、 rem bat/英文標題:、
rem bat/cheader:、 rem bat/中文標題:、 rem bat/中文標題:。
△提供命令列之參數:
/B:nnnn 設定緩衝區為 nnnn 位元組
預設值為 6400 位元組 (最大為 64K)
/R:nnn 設定最大 REM BAT/ 之行數為 nnn 行
預設值為 512 行 (最大為 32K) 2.01 : (Aug 24,1993)
△儲存螢幕的顏色,並於執行後還原。 2.02 : (Nov 23,1993)
△清除鍵盤緩衝區。
================================================================================ 本程式 BATMENU.EXE ,以及 CHECKSCR.EXE , LINES.EXE 係利用
國立中央大學校園網路資源所組譯與連結(compile & link)完成。
http://www.ViewMove.com 視動自動化科技股份有限公司 ViewMove Technologies, Inc. 發表人 - dllee 於 2004/06/19 10:42:09