VB程序的打包与发布_第1页
VB程序的打包与发布_第2页
VB程序的打包与发布_第3页
VB程序的打包与发布_第4页
VB程序的打包与发布_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、附录 打包和发布应用程序在创建 Visual Basic 应用程序后,您可能希望将该程序发布给其他人。您可以将使用 Visual Basic 创建的任何应用程序自由地发布给使用 Microsoft Windows 的任何人。可以通过磁盘、CD、网络、或者 intranet 以及 Internet这些途径来发布应用程序。下面以实例57为例介绍打包和展开应用程序。一、使用向导进行打包1启动打包和展开向导Visual Basic 的打包和展开向导使您能够轻松地为应用程序创建必需的 .cab文件以及安装程序。与其它向导一样,打包和展开向导将提示您输入相应信息,以便创建您所需要的准确配置。要从 Visu

2、al Basic 中启动打包和展开向导,请按照以下步骤执行:(1) 打开想要使用向导来打包或展开的工程。注意 如果您正在使用一个工程组,或已加载了多个工程,则在启动该向导之前,请确保当前的工程就是您要打包或展开的工程。(2)如果必要,请使用“外接程序管理器”来加载打包和展开向导:从“外接程序”菜单中选择“外接程序管理器”,从该列表中选择“打包和展开向导”,然后单击“确定”,如图1所示。图1 外接程序管理器(3)从“外接程序”菜单中选择“打包和展开向导”来启动该向导,如图2所示。打包和展开向导提供了三个选项:“打包”选项帮助您将一个工程的文件打包为一个可以展开的 .cab 文件,而且在某些情况下

3、还要创建一个安装程序来安装该 .cab 文件。向导确定需要打包的文件,并引导您作出所必需的选择,以便为您的工程创建一个或多个 .cab 文件。“展开”选项帮助您将打好包的应用程序传送到适当的发布媒体,例如软盘、网络共享、或 Web 站点。“管理脚本”选项让您可以查看和操作以前使用打包和展开向导时所保存的脚本。每次使用该向导时,都会保存一个包含您所做的所有选择的脚本。在以后的过程中,如果您想使用相似的设置值以及做出与原来相同的选择,就可以重新使用这些脚本。图2 打包和展开向导注意: 打包和展开向导只能为 Visual Basic 应用程序创建安装程序和发布媒体。如果要为其它基于 Windows

4、的应用程序创建安装程序,请使用与相应的开发产品一起提供的安装工具包或在Windows SDK 中提供的安装工具包。 2使用向导为应用程序打包为应用程序打包是指创建一个软件包的操作,该软件包可以将您的应用程序安装到用户的计算机上。软件包由一个或多个 .cab 文件组成,文件中包含了用户安装和运行应用程序所需的被压缩的工程文件和任何其它必需的文件。这些文件可能包括安装程序、辅助的 .cab 文件或其它必需的文件。这些附加的文件根据您创建的软件包类型不同而不同。具体过程如下:(1)启动“打包和展开向导”,在“打包和展开向导”窗口中单击“打包”。(2)在接下来的对话框中视具体情况选择“是”或“否”,在

5、这里我们选择“是”,如图3所示。图3 是否进行重新编译(3)选择打包脚本,如图4所示。图4 打包脚本(4)确定要创建的软件包类型您可以为基于Windows 的、要通过磁盘、CD或在网络上发布的程序创建一个标准软件包;或者可以为要在 Web 上发布的程序创建一个 Internet 软件包。也可以选择只创建从属文件,在这里我们选择“标准软件包”,如图5所示。图5 确定要创建的软件包类型您可以创建两种软件包,标准软件包或 Internet 软件包。如果计划通过磁盘、软盘或网络共享来发布应用程序,则应创建一个标准软件包。如果计划通过 intranet 或 Internet 站点来发布,则应创建一个 I

6、nternet 软件包。在多数情形下,可以使用 Visual Basic 提供的打包和展开向导来为您的应用程序打包。您可以手工打包应用程序,不过向导提供了很有用的快捷方式,并能自动处理一些在手工打包过程中不得不自己完成的任务。除了创建标准和 Internet 软件包之外,还可以使用打包和展开向导的打包部分来创建从属文件。从属文件列出了必须随应用程序的工程文件一起发布的运行时部件。重点:无论何时创建软件包,您都应确保已在“工程属性”对话框的“生成”选项卡中设置了工程的版本号码。如果您要发布一个现有应用程序的新版本,那么这一点特别重要:如果没有对版本号进行适当的更改,最终用户的计算机可能会认为关键

7、文件不需要更新。 (5)新建打包文件夹,缺省为“包”,如图6所示。图6 新建打包文件夹(6)确定需要发布的文件向导在创建软件包之前,必须确定应用程序的工程文件以及从属文件。特别是需要的图像、声音及readme.txt等文件,添加这些文件可单击“添加”,如图7所示。图7 选择包含的文件(7)确定压缩文件的个数及大小如果要用软盘发布应用程序,请选择多个压缩文件,大小选为1.44MB;如果用光盘发布,可选择“单个的压缩文件”,如图8所示。图8 选择压缩文件选项(8)设定安装文件标题,例如mp3player,如图9所示。图9 设置安装程序标题(9)设置安装在“开始”菜单“程序”中的位置,如图10所示。

8、图10 设置启动菜单项(10)确定将文件安装到用户机器上的位置程序和安装文件通常被安装到Program Files目录的某个子目录中,而系统和从属文件通常被安装到WindowsSystem 或 WinntSystem32目录中。您的安装程序必须考虑这一点,并确定每个文件要被安装在何处,如图11所示。图11 设置安装位置(11)设置共享文件共享的应用程序文件是指可能被系统中的多个应用程序使用的文件。例如,可能有多个软件商提供的应用程序都使用了同一个 ActiveX 控件。如果您创建了一个使用该控件的应用程序,则应在安装程序中将该控件的 .ocx 文件指明为共享文件。共享文件必须安装在一个其它应用

9、程序可以访问到的位置。在多数情形下,对于 Windows 98 和 Windows NT 4.0 及更新版本,这个位置是 ProgramFilesCommon Files。当最终用户卸载您的应用程序时,只有当其它应用程序没有使用这些共享文件时,系统才会将其删除。本例中可以设为共享文件的是mp3play2.exe,但由于它只是个一般应用程序,所以不必设为共享文件,如图12所示。图12 设置共享文件(12)设置软件包脚本名称输入脚本名称,单击“完成”,系统开始压缩文件,完成打包过程,如图13所示。图13 设置脚本名称 3标准软件包和Internet 软件包3.1 标准软件包标准软件包是一种专门用s

10、etup.exe 程序安装、而不是从 Web 站点下载 .cab 文件而设计的软件包。您可以为基于Windows 的、要通过磁盘、CD或网络共享来发布的应用程序创建标准软件包。当创建标准软件包时,必须在创建软件包之前仔细考虑计划使用的发布方法。如果计划使用软盘来发布,那么通常需要创建多个可以分别放置在若干张软盘上的 .cab 文件,而不能创建一个大的 .cab 文件。打包和展开向导中有一个选项让您指定是要创建一个还是多个 .cab 文件,以及要使用的 .cab 大小(1.44 MB、1.2 MB 等等)。如果您选择要创建多个 .cab 文件,向导将把应用程序文件分成若干个不超过指定大小的文件组

11、。重点:即使计划要发布到软盘上的应用程序小到当打包为一个大的 .cab 文件时也足够放置到一张磁盘上,您也仍然应该选择“多个 .cab 文件”选项,以便您在随后的向导操作中可以访问软盘的展开过程。而在这里,只创建了一个 .cab 文件。如果计划展开到网络或本地共享目录、CD或 Web 站点上,则既可以创建一个大的 .cab 文件,也可以创建多个较小的 .cab 文件。标准软件包的必要部分有若干个文件将始终作为标准软件包的一部分。这些文件包括:(1)setup.exe 文件Setup.exe 是一个预安装可执行程序。安装过程中第一个在用户机器上运行的程序就是 Setup.exe,该程序执行在主安

12、装之前必须进行的必要处理。(2)setup1.exe 文件Setup1.exe 是应用程序的主安装程序。(3)所有必需的支持文件支持文件存储在 Support 子目录,位于创建该软件包的目录的下一层。除了 setup.exe 和 setup1.exe 文件之外,该目录还包含用于自定义应用程序的 .cab 文件所需的文件,以备用户的需要。(4)应用程序的 .cab 文件Internet 应用程序和基于 Windows 的应用程序在发布前都将被打包到 .cab 文件之中。.cab 文件取代了 Visual Basic 原来版本中的一长列被压缩的应用程序文件。现在所有这些被压缩的文件都包含在 .ca

13、b 文件中。可以为应用程序创建一个单一的 .cab 文件,也可以为软盘发布方式创建多个 .cab 文件。注意:如果要在双向的 (BiDi) 操作系统上运行应用程序,则需要手工在打包和展开向导所创建的 Setup.lst 中包括 vbame.dll 文件。要实现这个操作,可以在运行打包和展开向导时,在“包含文件”屏幕上通过直接编辑 Setup.lst 来添加该文件;或者在 vb6dep.ini 文件中为vbame.dll 添加一项,以便不论何时运行打包和展开向导,该文件都将被自动添加到 Setup.lst 中。如果应用程序使用了 Visual Basic 的数据访问技术之一,例如数据访问对象 (

14、DAO)、ActiveX 数据对象 (ADO)或远程数据对象 (RDO),则打包和展开向导打包过程中还将执行两个附加步骤:如果应用程序使用了 ADO、OLEDB或 ODBC 部件,向导将自动添加一个名为 mdac_type.exe 的文件到要包含软件包的文件列表中。Mdac_type.exe 是一个自解压的可执行程序,它将安装您的数据访问技术所需的所有必需部件。3.2 Internet软件包Internet 软件包是基于.cab的安装程序,它是专为从 Web 站点下载而设计的。Internet Explorer 使用一个称为“Internet部件下载”的过程来安装Internet 应用程序。打

15、包和展开向导自动包括其所创建的软件包所需的信息。有多种类型的 Visual Basic 应用程序或部件可以被打包,以供 Internet 展开,其中包括:(1)在 Web 页上显示的 ActiveX 控件(.ocx 文件)。(2)用于在客户或 Web 服务器上运行的 ActiveX .exe 或 .dll 文件。(3)代替 Web 页显示的 ActiveX 文档。?DHTML 应用程序,基于客户的、通过使用动态的 HTML 来链接 HTML页与 Visual Basic 代码的应用程序。(4)IIS 应用程序,基于服务器的、链接 HTML 页与 webclass 对象的应用程序。该 webcl

16、ass 截取来自浏览器的服务器请求,并执行 Visual Basic代码来响应。Internet 软件包的部分有若干个文件将始终作为 Internet 软件包的一部分。这些文件包括:(1)应用程序的主要 .cab 文件Internet 软件包的主要 .cab 文件用作应用程序的安装程序。主要 .cab 文件包括工程部件,例如应用程序的可执行文件或 DLL或控件的 .ocx 文件、一个引用辅助 .cab 文件以及包含安全性和注册表信息的 .inf 文件,以及不属于辅助 .cab 文件的所有必需的从属文件。(2)所有必需的支持文件Internet 应用程序的支持文件包括 HTML 文件、Activ

17、e Server Pages (.asp) 文件、各种格式的图形文件或应用程序运行时必需访问的其它文件。(3)应用程序的任何辅助 .cab 文件除了工程文件之外,应用程序通常会引用若干个运行时部件,例如 Visual Basic 运行时 DLL、单个的 ActiveX控件以及数据访问对象。如果这些部件可以联机从预包装的 .cab 文件中获得,则可以在主要 .cab 文件中引用这些 .cab 文件,而不必自己来传送这些文件。辅助 .cab 文件提供了一个有效的途径,可以确保用户使用的是该部件的最新版本。如果辅助 .cab 文件中部件的较新版本已经可以从外部 Web 站点上获得,则下载您应用程序的

18、用户将自动收到该部件的更新版本。注意:如果不能或不愿意让应用程序的安装程序需要与 Internet 的连接,则可以将辅助 .cab 文件放置在您的intranet服务器上。intranet 服务器通常提供了更快的下载,并允许用户从安全的网络下载。二、使用向导展开应用程序展开应用程序是指将打好包的应用程序放置到选定的发布媒体上,或放置到可由此下载的 Web 站点上的操作。有两种展开 Visual Basic 应用程序的途径:(1)可以使用打包和展开向导的“展开”部分来将应用程序展开到软盘、本地或网络驱动器或 Web 站点上。(2)可以手工将文件复制到磁盘或共享目录,或手工将文件在适当的 Web

19、站点上发布。打包和展开向导提供了快捷方式,并能自动执行在手工展开应用程序时不得不手工执行的一些相同的任务。1展开过程的全部步骤不论是使用打包和展开向导,还是手工方式来展开软件包,都有一些必须采取的步骤。 (1)创建用于展开的软件包。可以是单个的 .cab 文件,也可以是一系列 .cab文件,这取决于您计划如何发布应用程序。(2)确定要展开的软件包。可以为选定的工程选择任何有效的软件包,如图14所示。图14 选择要展开的包(3)选择展开方法。可以将应用程序展开到 Internet、软盘或本地或网络驱动器的目录上,如图15所示。图15 选择展开方法展开到软盘、目录以及 CD只有在使用“多个压缩文件

20、”选项创建了标准软件包后,才可以使用打包和展开向导展开到软盘上。该选项确保了软件包将由多个 .cab 文件组成,或由一个小于一张磁盘容量的单个 .cab 文件组成。在将 .cab 文件复制到软盘前,系统将为每个磁盘提供格式化选项。您无需格式化磁盘,但在展开过程中必须使用空磁盘。如果选择展开到某个目录,则系统将提示您挑选一个用来复制文件的本地或网络目录。然后您可以引导用户从该位置来访问应用程序的安装程序,也可以将文件放置到 CD-ROM 上。注意:如果您有一个可写的 CD 驱动器,则可以使用向导的展开部分直接将文件复制到该驱动器,而不必先展开到一个目录后再将文件复制到CD 上。展开到 Web您可

21、以将任何软件包,不论是标准软件包还是 Internet 软件包,展开到 Web上。当您选择 “Web 发布”作为展开方法时,系统会把工程文件夹视为展开的本地基础文件夹。本地基础文件夹用于确定应如何将文件何目录复制到所选择的 Web 站点上。处于本地基础目录中的文件和目录将被展开到同基础目录有相同的目录结构的 Web 服务器上。注意:缺省情况下,向导不会在工程目录或 Support 子目录中展开源文件。向导的打包部分将创建 Support 目录并将文件放置在该目录中,该目录可用来重新创建 .cab 文件。(4)选择要展开的文件。如果要展开到 Internet 上,您可以对要展开的文件列表添加或删

22、除文件,如图16所示。图16 选择要展开的文件(5)为要展开的文件确定目标。对于 Internet 展开方式,本步骤将指定一个应展开该软件包的 Web 站点,如图17所示。对于目录展开方式,则本步骤指定展开该软件包的驱动器位置,如图18所示。对于软盘展开方式,则本步骤要选择适当的软盘驱动器。图17 设置Web发布站点图18 选择展开位置(6)展开软件包。三、管理向导脚本如果使用打包和展开向导,可以创建并存储脚本。脚本是指在打包或展开过程中所做选择的记录。创建一个脚本就可以将这些选择保存起来,以便您在向导以后的过程中为同一个工程应用该脚本。使用脚本可以显著地节省打包和展开时间。此外,可以使用脚本

23、以静态模式打包和展开应用程序。每次打包或展开工程时,Visual Basic 都会将有关过程的信息保存为一个脚本。工程的所有脚本都存储在应用程序工程目录的一个特别文件中。要查看脚本列表,请按照以下步骤执行:(1)启动向导,然后从主屏幕上选择“管理脚本”。重点:如果已经将向导作为独立的应用程序启动,那么在选择“管理脚本”之前必须选择所需的 Visual Basic 工程。(2)复制或删除脚本。你可以复制或删除“打包脚本”或“展开脚本”,如图19所示。图19 “管理脚本”对话框注意:在安装过程中包含两个安装程序setup.exe 和 setup1.exe。setup.exe 程序在用户计算机上执行

24、预安装处理,包括安装 setup1.exe程序以及运行主安装程序所需的任何其它文件。在安装工具包中,只有 setup1.exe 是可以自定义的。安装工具包除了在创建安装程序的过程中扮演了支持角色之外,还可以用于修改安装过程中出现的屏幕,或直接创建一个安装程序。如果需要在安装顺序中添加向导所不支持的附加功能,则您可以创建一个自定义的安装程序。安装工具包工程位于Visual Basic 主目录的 WizardsPDWizardSetup1 子目录中。 四、修改安装工程如果希望给打包和展开向导所创建的安装过程添加新的屏幕、提示或事件,则可以修改 Setup1.vbp 工程。您可以在安装程序中编写代码

25、,如同在其它的Visual Basic 程序中一样。大量可用的函数调用在安装程序中都是特别有用的。可能修改安装工具包工程的一些情形示例包括:需要在安装过程中添加特殊的用户提示。希望为安装程序创建一个自定义的外观。希望在安装过程中显示布告板。布告板介绍了有关产品的特性、服务和支持、注册的信息,以及其它相关信息。希望使用自己的压缩工具将应用程序的文件复制到发布媒体上。注意:由于打包和展开向导要使用安装工具包中的文件,因此应当在进行任何更改之前都要备份该工程。此外,还应该备份 Setup1 目录中的所有内容。要修改安装工具包工程,请按照以下步骤执行:(1)在进行任何更改之前,创建一个 Wizards

26、PDWizardsetup1.exe 和Wizards PDWizardSetup1 目录中所有内容的备份。(2)从 WizardsPDWizardSetup1 目录打开 setup1.vbp 工程。(3)对该工程的代码、窗体或模块进行更改。(4)保存该工程,并将其进行编译以创建 setup1.exe。(5)如果您使用打包和展开向导来对应用程序打包,则启动打包和展开向导并为应用程序创建一个软件包。(6)如果创建您自己的自定义安装软件包,请继续执行“安装工具提示”中概述的步骤。附录资料:不需要的可以自行删除bat文件的基本应用bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处

27、理文件 从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。 = 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用

28、DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 = 注 = 批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应用越来越边缘化。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。 = 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来

29、是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 = 注 = 批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。 = 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(pat

30、h)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:batch,你就可以在任意位置运行所有你编写的批处理程序。 = 注 = 纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到低排列分别是:DOSKEY宏命令(预先驻留内存),COMMAND.COM中的内部命令(根据内存的环境随时进驻内存),以com为扩展名的可执行程序(由 直接载入内存),以exe位扩展名的可执行程序(由 重定位后载入内存),以bat位扩展名的批处理程序(由 解释分析,根据其内

31、容按优先级顺序调用第2,3,4,5种可执行程序,分析一行,执行一行,文件本身不载入内存) = 第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是自动运行批处理文件,每次系统启动时会自动运行该文件,你可以将系统每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和磁盘缓存,设置系统环境变量等。下面是一个运行于Windows 98下的autoexec.bat的示例: ECHO OFF PATH C:WINDOWS;C:WINDOWSCOMMAND;C:UCDOS;C:DOSTools; C:SYSTOOLS;C:WINTOOLS;C:BAT

32、CH LH SMARTDRV.EXE /X LH DOSKEY.COM /insert LH CTMOUSE.EXE SET TEMP=D:TEMP SET TMP=D:TEMP = 注 = AUTOEXEC.BAT为DOS系统的自动运行批处理文件,由COMMAND.COM启动时解释执行; 而在Win9x环境中,不仅增加支持了 DOSSTART.BAT, WINSTART.BAT 等许多其它自动运行的批处理文件,对AUTOEXEC.BAT 也增加了 .DOS .W40 .BAK .OLD .PWS 等许多变体以适应复杂的环境和多变的需求。 = willsort 编注 = 以下关于命令的分类,有

33、很多值得推敲的地方。常用命令中的本不是命令,而dir、copy等也很常用的命令却没有列入, 而特殊命令中所有命令对我来说都是常用命令。建议将批处理所引用的命令分为内部命令、外部命令、第三方程序三类。而内部命令和外部命令中别有一类是专用于或常用于批处理中的命令可称之为批处理命令。 以下摘录MS-DOS 6.22 帮助文档中关于批处理命令的文字,当然,其中有些概念和定义已经有些落后了。 批处理命令 批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批处理程序中的命令。 任何在命令提示符下可使用的命令都可用

34、在批处理程序中。此外,下面MS-DOS命令是专门在批处理程序中使用的。 = 常用命令 echo、call、pause、rem(小技巧:用:代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 = 注 = 首先, 不是一个命令, 而是DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显. 下面是DOS命令行或批处理中可能会见到的一些特殊标记符: CR(0D) 命令行结束符 Escape(1B) ANSI转义字符引导符 Space(20) 常用的参数界定符 Tab(09) ; = 不常用的参数界定符 + COPY命令文件连接符 * ? 文件通配符 字符串界定符 | 命令管道符 文件重

35、定向符 命令行回显屏蔽符 / 参数开关引导符 : 批处理标签引导符 % 批处理变量引导符 其次, : 确实可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意: 第一, 除了 : 之外, 任何以 :开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用 goto 所无法识别的标号, 即在 :后紧跟一个非字母数字的一个特殊符号. 第二, 与rem 不同的是, :后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 : 更为适用

36、; 另外, rem 可以用于 config.sys 文件中. = echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue.的提示,等待用户按任意键后继续 rem 表示此命令后的字符为解释行(注释),

37、不执行,只是给自己今后参考用的(相当于程序中的注释)。 = 注 = 此处的描述较为混乱, 不如直接引用个命令的命令行帮助更为条理 ECHO 当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。 在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命令。 使用ECHO命令可关闭此功能。 语法 ECHO ON|OFF 若要用echo命令显示一条命令,可用下述语法: echo message 参数 ON|OFF 指定是否允许命令的回显。若要显示当前的ECHO的设置,可使用不带参数的ECHO 命令。 message 指定让MS-DOS在屏幕上显示的正文。 CAL

38、L 从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。 语法 CALL drive:pathfilename batch-parameters 参数 drive:pathfilename 指定要调用的批处理程序的名字及其存放处。文件名必须用.BAT作扩展名。 batch-parameters 指定批处理程序所需的命令行信息。 PAUSE 暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处 理程序中使用该命令。 语法 PAUSE REM 在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在CONFIG.SYS 中也可以用分号 ;

39、代替REM命令,但在批处理文件中则不能替代)。 语法 REM string 参数 string 指定要屏蔽的命令或要包含的注解。 = 例1:用edit编辑a.bat文件,输入下列内容后存盘为c:a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。 批处理文件的内容为: 命令注释: echo off 不显示后续命令行及当前命令行 dir c:*.* a.txt 将c盘文件列表写入a.txt call c:ucdosucdos.bat 调用ucdos echo 你好 显示你好 pause 暂停,等待按键继续 rem 准备运行wps 注释:准

40、备运行wps cd ucdos 进入ucdos目录 wps 运行wps 批处理文件的参数 批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符%。 %1-9表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。 例2:C:根目录下有一批处理文件名为f.bat,内容为: echo off format %1 如果执行C:f a: 那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时

41、实际执行的是format a: 例3:C:根目录下一批处理文件名为t.bat,内容为: echo off type %1 type %2 那么运行C:t a.txt b.txt %1 : 表示a.txt %2 : 表示b.txt 于是上面的命令将顺序地显示a.txt和b.txt文件的内容。 = 注 = 参数在批处理中也作为变量处理, 所以同样使用百分号作为引导符, 其后跟0-9中的一个数字构成参数引用符. 引用符和参数之间 (例如上文中的 %1 与 a: ) 的关系类似于变量指针与变量值的关系. 当我们要引用第十一个或更多个参数时, 就必须移动DOS 的参数起始指针. shift 命令正充当了

42、这个移动指针的角色, 它将参数的起始指针移动到下一个参数, 类似C 语言中的指针操作. 图示如下: 初始状态, cmd 为命令名, 可以用 %0 引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 | | | | | | | | | | %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 经过1次shift后, cmd 将无法被引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 | | | | | | | | | | %0 %1 %2 %3 %4 %5 %6

43、%7 %8 %9 经过2次shift后, arg1也被废弃, %9指向为空, 没有引用意义 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 | | | | | | | | | %0 %1 %2 %3 %4 %5 %6 %7 %8 遗憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 内核命令行环境下, shift 才支持 /n 参数, 可以以第一参数为基准返复移动起始指针. = 特殊命令 if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。

44、一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 1、if not 参数 = 字符串 待执行的命令 参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。 例:if %1=a format a: = if 的命令行帮助中关于此点的描述为: IF NOT string1=string2 command 在此有以下几点需要注意: 1. 包含字符串的双引号不是语法所必须的, 而只是习惯上使用的一种防空字符 2. string1 未必是参数, 它也可以是环境变量, 循环变量以及其他字符串常量或变量 3. command 不是语法

45、所必须的, string2 后跟一个空格就可以构成一个有效的命令行 = 2、if not exist 路径文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如: if exist c:config.sys type c:config.sys 表示如果存在c:config.sys文件,则显示它的内容。 * 注 * 也可以使用以下的用法: if exist command device 是指DOS系统中已加载的设备, 在win98下通常有: AUX, PRN, CON, NUL COM1, COM2, COM3, COM4 LPT1, LPT2, LPT3, LPT4

46、 XMSXXXX0, EMMXXXX0 A: B: C: ., CLOCK$, CONFIG$, DblBuff$, IFS$HLP$ 具体的内容会因硬软件环境的不同而略有差异, 使用这些设备名称时, 需要保证以下三点: 1. 该设备确实存在(由软件虚拟的设备除外) 2. 该设备驱动程序已加载(aux, prn等标准设备由系统缺省定义) 3. 该设备已准备好(主要是指a: b: ., com1., lpt1.等) 可通过命令 mem/d | find device /i 来检阅你的系统中所加载的设备 另外, 在DOS系统中, 设备也被认为是一种特殊的文件, 而文件也可以称作字符设备; 因为设备

47、(device)与文件都是使用句柄(handle)来管理的, 句柄就是名字, 类似于文件名, 只不过句柄不是应用于磁盘管理, 而是应用于内存管理而已, 所谓设备加载也即指在内存中为其分配可引用的句柄. = 3、if errorlevel 待执行的命令 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。 如if errorlevel 2 goto x2 = 注 = 返回值从大到

48、小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式: if errorlevel 1 set el=1 if errorlevel 2 set el=2 if errorlevel 3 set el=3 if errorlevel 4 set el=4 if errorlevel 5 set el=5 . 当然, 也可以使用以下循环来替代, 原理是一致的: for %e in (1 2 3 4 5 6 7 8.) do if errorlevel %e set e

49、l=%e 更高效简洁的用法, 可以参考我写的另一篇关于获取 errorlevel 的文章 出现此种现象的原因是, if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于 set命令的 重复 赋值特性, 由大到小排序会导致较小的返回码 覆盖 较大的返回码. 另外, 虽然 if errorlevel= command 也是有效的命令行, 但也只是 解释命令行时将 = 作为命令行切分符而忽略掉罢了 = 二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字

50、符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。 如: goto end :end echo this is the end 标号用:字符串来定义,标号所在行不被执行。 = willsort 编注 label 常被译为 标签 , 但是这并不具有广泛的约定性. goto 与 : 联用可实现执行中途的跳转, 再结合 if 可实现执行过程的条件分支, 多个 if 即可实现命令的分组, 类似 C 中 switch case 结构或者 Basic 中的 select case 结构, 大规模且结构化的命令分组即可实现高级语言中的函数功能. 以下是批处理和C/Basic在

51、语法结构上的对照: Batch C / Basic goto&: goto&: goto&:&if if&else / if&elseif&endif goto&:&if. switch&case / select case goto&:&if&set&envar. function() / function(),sub() = 三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。 注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的cho

52、ice命令语法会稍有不同,请用choice /?查看用法。 choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异): CHOICE /C choices /N /CS /T timeout /D choice /M text 描述: 该工具允许用户从选择列表选择一个项目并返回所选项目的索引。 参数列表: /C choices 指定要创建的选项列表。默认列表是 YN。 /N 在提示符中隐藏选项列表。提示前面的消息得到显示, 选项依旧处于启用状态。 /CS 允许选择分大小写的选项。在默认情况下,这个工具 是不分大小写的。 /

53、T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项 会得到选择。 /D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选 项指定的一组选择中; 同时,必须用 /T 指定 nnnn。 /M text 指定提示之前要显示的消息。如果没有指定,工具只 显示提示。 /? 显示帮助消息。 注意: ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选 择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择, 该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的 E

54、RRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0 的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降 序排列。 示例: CHOICE /? CHOICE /C YNC /M 确认请按 Y,否请按 N,或者取消请按 C。 CHOICE /T 10 /C ync /CS /D y CHOICE /C ab /M 选项 1 请选择 a,选项 2 请选择 b。 CHOICE /C ab /N /M 选项 1 请选择 a,选项 2 请选择 b。 = willsort 编注 = 我列出win98下choice的用法帮助,

55、 已资区分 Waits for the user to choose one of a set of choices. 等待用户选择一组待选字符中的一个 CHOICE /C:choices /N /S /T:c,nn text /C:choices Specifies allowable keys. Default is YN 指定允许的按键(待选字符), 默认为YN /N Do not display choices and ? at end of prompt string. 不显示提示字符串中的问号和待选字符 /S Treat choice keys as case sensitive.

56、 处理待选字符时大小写敏感 /T:c,nn Default choice to c after nn seconds 在 nn 秒后默认选择 c text Prompt string to display 要显示的提示字符串 ERRORLEVEL is set to offset of key user presses in choices. ERRORLEVEL 被设置为用户键入的字符在待选字符中的偏移值 如果我运行命令:CHOICE /C YNC /M 确认请按 Y,否请按 N,或者取消请按 C。 屏幕上会显示: 确认请按 Y,否请按 N,或者取消请按 C。 Y,N,C? 例:test.b

57、at的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列): echo off choice /C dme /M defrag,mem,end if errorlevel 3 goto end if errorlevel 2 goto mem if errorlevel 1 goto defrag :defrag c:dosdefrag goto end :mem mem goto end :end echo good bye 此批处理运行后,将显示defrag,mem,endD,M,E? ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标

58、号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。 四、for 循环命令,只要条件符合,它将多次执行同一命令。 语法: 对一组文件中的每一个文件执行某个特定命令。 FOR %variable IN (set) DO command command-parameters %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 例如一个批处理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论