我們知道 DOS 下的批處理程序中可以用 ECHO 顯示一段信息(提示信息或出錯信息)對於要接收用戶輸入的情況MSDOS 本身提供的外部程序就只有 CHOICE 能讓用戶輸入一個鍵所以基本上只能用於菜單選擇對於下述兩個需求那就只有另外編程序了
.在 DOS 下的批處理程序中通過 WINDOWS 對話框顯示一段提示信息或出錯信息
.在 DOS 下的批處理程序中通過 WINDOWS 對話框接收用戶輸入的一個字符串並對其進行後續處理
對於這兩個問題相信有些人已經有了一些解決方案在此我提出我的解決方案是用 DELPHI 寫的程序(這些DELPHI程序都是沒有 FORM 和PAS文件的)我覺得比較簡單作為拋磚引玉
顯示提示信息 SHOWMSGDPR
program ShowMsg;
uses Windows;
{$R *RES}
begin
if ParamCount < then
begin
MessageBox( 用Windows對話框顯示信息##+
用法: ShowMsg 提示信息 對話框標題
用法說明 MB_ICONINFORMATION);
Halt;
end;
MessageBox( PChar(ParamStr()) Pchar(ParamStr()) MB_OK);
Halt;
end
顯示出錯信息 EmsgDlgDPR
program EmsgDlg;
uses Windows;
{$R *RES}
begin
if ParamCount < then
begin
MessageBox( 用Windows對話框顯示出錯信息##+
用法: EmsgDlg 出錯信息 對話框標題
用法說明 MB_ICONINFORMATION);
Halt;
end;
MessageBox( PChar(ParamStr()) PChar(ParamStr()) mb_IconHand);
Halt;
end
INPUTBOXDPR
通過 WINDOWS 對話框接收用戶輸入的一個字符串並把用戶輸入作為調用一個批處理程序或其他程序的第個參數
program INPUTBOX;
uses Dialogs Windows;
{$R *RES}
var
NewString: string;
ClickedOK: Boolean;
begin
if ParamCount < then
begin
MessageBox( 將用戶輸入作為BAT或其他程序的參數調用##+
用法: InputBox BAT或其他程序文件名 缺省輸入 對話框標題 提示信息
InputBox用法說明 MB_ICONINFORMATION);
Halt;
end;
NewString := ParamStr(); //default string
ClickedOK := InputQuery(ParamStr() ParamStr() NewString);
if ClickedOK then
WinExec(PChar(ParamStr() + + NewString) SW_SHOWNORMAL);
Halt;
end
用法舉例
PRTBAT文件內容:
@ECHO OFF
D:\POS\INPUTBOXEXE PRBAT 解壓POS報表文件並用寫字板打開入帳匯總表 請輸入日期:
PRBAT文件內容:
@ECHO OFF
IF %== GOTO END
D:
CD \POS\INBOX
IF NOT EXIST POS%ARJ GOTO NOT_FOUND
D:\POS\ARJ X y POS%ARJ
CD D:\POS\INBOX\pos_report
IF NOT EXIST PrB%txt GOTO PR_NOT_FOUND
C:\WINDOWS\WRITE PrB%txt
D:\POS\ShowMsg 成功! OK!!!
GOTO END
:NOT_FOUND
D:\POS\EmsgDlg 文件D:\POS\INBOX\POS%ARJ找不到! 出錯!
CD D:\
GOTO END
:PR_NOT_FOUND
D:\POS\EmsgDlg 文件D:\POS\INBOX\pos_report\PrB%txt找不到! 出錯!
CD D:\
GOTO END
:END
注上述 DELPHI 程序編譯後INPUTBOXEXE大小是KBEMSGDLGEXE 和 ShowMsgexe大小都是 KB沒有比較用 VC 或 BCB 來寫的結果但可以肯定用 WIN 匯編產生的 EXE 最小不過我沒有仔細學過 WIN 匯編歡迎有興趣的大俠比較一下或提出改進方法
From:http://tw.wingwit.com/Article/program/Delphi/201311/25043.html