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

  • 内容
  • 评论
  • 相关

我们知道 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}

http://www.gaodaima.com/?p=66015通过DELPHI小程序在WINDOWS下更好地使用DOS批处理_Delphi

begin
  if 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
if 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: string;
ClickedOK: Boolean;
begin
if ParamCount < 4 then
begin
MessageBox(0, '将用户输入作为.BAT或其他程序的参数调用'#13#10+
'用法: InputBox .BAT或其他程序文件名 缺省输入 对话框标题 提示信息',
'InputBox用法说明', MB_ICONINFORMATION);
Halt;
end;
NewString := ParamStr(2); //default string
ClickedOK := InputQuery(ParamStr(3), ParamStr(4), NewString);
if 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大小是308KB,EMSGDLG.EXE 和 ShowMsg.exe大小都是 17KB,没有比较用 VC 或 BCB 来写的结果。但可以肯定,用 WIN32 汇编产生的 .EXE 最小,不过我没有仔细学过 WIN32 汇编。欢迎有兴趣的大侠比较一下或提出改进方法。

欢迎大家阅读《通过DELPHI小程序在WINDOWS下更好地使用DOS批处理_Delphi》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

本文链接地址: 通过DELPHI小程序在WINDOWS下更好地使用DOS批处理_Delphi

微信支付二维码

微信 赏一包辣条吧~

支付宝支付二维码

支付宝 赏一听可乐吧~

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注