delphi小程序:通过DELPHI小程序在WINDOWS下更好地使用DOS批处理

我们知道 DOS 下批处理可以用 ECHO 显示段信息(提示信息或出错信息)对于要接收用户输入情况MS-DOS 本身提供外部就只有 CHOICE 能让用户输入个键所以基本上只能用于菜单选择对于下述两个需求那就只有另外编了:
1、在 DOS 下批处理中通过 WINDOWS 对话框显示段提示信息或出错信息
2、在 DOS 下批处理中通过 WINDOWS 对话框接收用户输入并对其进行后续处理

对于这两个问题相信有些人已经有了些解决方案在此我提出我解决方案是用 DELPHI 写(这些DELPHI都是没有 FORM 和.PAS文件)我觉得比较简单作为抛砖引玉

1.1 显示提示信息 SHOWMSG.DPR
program ShowMsg;
uses Windows;
{$R *.RES}
begin
   ParamCount < 2 then
begin
MessageBox(0, '用Windows对话框显示信息'#13#10+
'使用方法: ShowMsg 提示信息 对话框标题',
'使用方法介绍说明', MB_ICONINFORMATION);
Halt;
end;
MessageBox(0, PChar(ParamStr(1)), Pchar(ParamStr(2)), MB_OK);
Halt;
end.

1.2 显示出错信息 EmsgDlg.DPR
program EmsgDlg;
uses Windows;
{$R *.RES}
begin
ParamCount < 2 then
begin
MessageBox(0, '用Windows对话框显示出错信息'#13#10+
'使用方法: EmsgDlg 出错信息 对话框标题',
'使用方法介绍说明', MB_ICONINFORMATION);
Halt;
end;
MessageBox(0, PChar(ParamStr(1)), PChar(ParamStr(2)), mb_IconHand);
Halt;
end.

2. INPUTBOX.DPR: 通过 WINDOWS 对话框接收用户输入并把用户输入作为个批处理或其他第1个参数
program INPUTBOX;
uses Dialogs, Windows;
{$R *.RES}
var
NewString: ;
ClickedOK: Boolean;
begin
ParamCount < 4 then
begin
MessageBox(0, '将用户输入作为.BAT或其他参数'#13#10+
'使用方法: InputBox .BAT或其他文件名 缺省输入 对话框标题 提示信息',
'InputBox使用方法介绍说明', MB_ICONINFORMATION);
Halt;
end;
NewString := ParamStr(2); //default
ClickedOK := InputQuery(ParamStr(3), ParamStr(4), NewString);
ClickedOK then
WinExec(PChar(ParamStr(1) + ' ' + NewString), SW_SHOWNORMAL);
Halt;
end.


使用方法举例:
PRT.BAT文件内容:
@ECHO OFF
D:\POS\INPUTBOX.EXE PR30.BAT "99991231" "解压POS报表文件并用写字板打开入帐汇总表" "请输入日期:"

PR30.BAT文件内容:
@ECHO OFF
IF "%1""" GOTO END
D:
CD \POS\INBOX
IF NOT EXIST POS%1.ARJ GOTO NOT_FOUND
D:\POS\ARJ X -y POS%1.ARJ
CD D:\POS\INBOX\pos_report
IF NOT EXIST Pr30B%1.txt GOTO PR30_NOT_FOUND
C:\WINDOWS\WRITE Pr30B%1.txt
D:\POS\ShowMsg "成功!" "OK!!!"
GOTO END

:NOT_FOUND
D:\POS\EmsgDlg "文件D:\POS\INBOX\POS%1.ARJ找不到!" "出错!"
CD D:\
GOTO END

:PR30_NOT_FOUND
D:\POS\EmsgDlg "文件D:\POS\INBOX\pos_report\Pr30B%1.txt找不到!" "出错!"
CD D:\
GOTO END

:END

注:上述 DELPHI 编译后INPUTBOX.EXE大小是308KBEMSGDLG.EXE 和 ShowMsg.exe大小都是 17KB没有比较用 VC 或 BCB 来写结果但可以肯定用 WIN32 汇编产生 .EXE 最小不过我没有仔细学过 WIN32 汇编欢迎有兴趣大侠比较下或提出改进思路方法
Tags:  dos批处理 msdos批处理文件 delphi批处理 delphi小程序

延伸阅读

最新评论

发表评论