其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

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


发布日期:2019年04月05日
 
通过DELPHI小程序在WINDOWS下更好地使用DOS批处理

我们知道 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 汇编欢迎有兴趣的大侠比较一下或提出改进方法

上一篇:Delphi for Linux中应用共享对象库

下一篇:用Delphi编写圆周率模拟器[2]