1、ArcGIS网络分析最短路径分析源代码(VB6.0) 12 ' Copyright 1995-2005 ESRI 3' All rights reserved under the copyright laws of the United States. 4 5 ' You may freely redistribute and use this sample code, with or without modifi cation. 6 ' Disclaimer: THE SAMPLE CODE IS PROVIDED "AS IS" AND ANY EXPRESS O R IMPL
2、IED 7 ' WARRANTIES, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILIT Y AND FITNESS' FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ESR I OR 8 ' CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE CIAL, EXEMPLARY, 9 ' OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
3、 TO, PROC UREMENTOF' SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; O R BUSINESS 10 ' INTERRUPTION) SUSTAINED BY YOU OR A THIRD PARTY, HOWEVER CAUSE D AND ON ANY 11 ' THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TO RT ARISING IN ANY 12 1 WAY OUT OF THE USE OF THIS
4、 SAMPLE CODE, EVEN IF ADVISED OF THE P OSSIBILITY OF' SUCH DAMAGE. 18246 247248 249250 251252 253254 255256 257258 259260 261262 263264 265266 267268 269270 271272 273274 275 ,set the iterator to beginning ipEnumEIDInfo. Reset For i = 1 To count 'get the next EID and a copy of it
5、s geometry (it makes a Clone) Set ipEIDInfo = ipEnumEIDInfo.Next Set ipGeometry = ipEIDInfo.Geometry ipNewGeometryColl.AddGeometryCollection ipGeometry Next ' EID 'return the merged geometry as a Polyline Set PathPolyLine = mJpPolyline End Property 'Private Private Sub CloseWorkspace() 'ma
6、ke sure we let go of everything and start with new results Set mJpGeometricNetwork = Nothing Set m_ipPoints = Nothing Set mJpPointToEID = Nothing Set m_ipEnumNetEID_Junctions = Nothing Set m_ipEnumNetEID_Edges = Nothing Set mJpPolyline = Nothing End Sub276 277 Private Function InitializeNetw
7、orkAndMap(FeatureDataset As esriGeoDataba se.IFeatureDataset) As Boolean 278Dim ipNetworkCollection As esriGeoDatabase.INetworkCollection 279 Dim ipNetwork As esriGeoDatabase.INetworkDim count As Long, i As Long Dim ipFeatureClassContainer As esriGeoDatabase.IFeatureClassContainerDim ipFeatureClas
8、s As esriGeoDatabase.IFeatureClass 283 Dim ipGeoDataset As esriGeoDatabase.IGeoDatasetDim ipLayer As esriCarto.ILayer 284 Dim ipFeatureLayer As esriCarto.IFeatureLayer Dim ipEnvelope As esriGeometry.IEnvelope, ipMaxEnvelope As esriGeomet ry.IEnvelope 288 Dim dblSearchTol As Double289 Dim dbIWidth
9、 As Double, dbIHeight As Double 290291 On Error GoTo Trouble 292293' get the networks 294 Set ipNetworkCollection = FeatureDataset295 296' even though a FeatureDataset can have many networks, we'll just297' assume the first one (otherwise you would pass the network name inz et c.)298 299 ' get
10、 the count of networkscount = ipNetworkCollection.GeometricNetworkCount 301302 Debug.Assert count > 0 ' then Exception.Create('No networks found'); 303304 305306 307308 309310 311312 313314 315316 317 er318 319320 asses 321322 323324 325326 327328 329330 ,get the first Geometric Newt
11、ork (0 - based) Set mJpGeometricNetwork = ipNetworkCollection.GeometricNetwork(O) 'get the Network Set ipNetwork = mJpGeometricNetwork.Network 'The EID Helper class that converts points to EIDs needs a 'IMap, so we'll need one around with all our layers added. ,This Pathfinder object has an op
12、tional Map property than may be set 'before opening the Network. If mJpMap Is Nothing Then Set m_ipMap = New esriCarto.Map 'Add each of the Feature Classes in this Geometric Network as a map Lay Set ipFeatureClassContainer = mJpGeometricNetwork count = ipFeatureClassContainer.ClassCount Debug
13、Assert count > 0 ' then Exception.Create('No (network) feature cl found'); For i = 0 To count - 1,get the feature class Set ipFeatureClass = ipFeatureClassContainer.Class(i)'make a layer Set ipFeatureLayer = New esriCarto.FeatureLayerSet ipFeatureLayer.Featureclass = ipFeatureClass 'add layer t
14、o the mapmJpMap.AddLayer ipFeatureLayer Next331 332333 334335 336337 338339 340341 342343 344345 346347 348349 350351 352353 354355 356357 358359 End If ' we needed to make a Map 'Calculate point snap tolerance as 1/100 of map width. count = mJpMap. LayerCount Set ipMaxEnvelope =
15、New esriGeometry.Envelope For i = 0 To count - 1 Set ipLayer = mJpMap.Layer(i) Set ipFeatureLayer = ipLayer 'get its dimensions (for setting search tolerance) Set ipGeoDataset = ipFeatureLayer Set ipEnvelope = ipGeoDataset.Extent 'merge with max dimensions ipMaxEnvelope.Union ipEnvelope Nex
16、t 'finally, we can set up the IPointToEID … Set mJpPointToEID = New esriNetworkAnalysis.PointToEID Set mJpPointToEID.SourceMap = mJpMap Set mJpPointToEID.GeometricNetwork = mJpGeometricNetwork 'set snap tolerance dbIWidth = ipMaxEnvelope. Width dbIHeight = ipMaxEnvelope. Height If dbIWidth >
17、 dbIHeight Then dblSearchTol = dbIWidth / 100# Else dblSearchTol = dbIHeight / 100#360 End If 361362 m_ipPointToEID.SnapTolerance = dblSearchTol 363364 InitializeNetworkAndMap = True ' good to go 365 Exit Function366 367 Trouble: 368 InitializeNetworkAndMap = False ' we had an error369 End F
18、unction 附录资料:不需要的可以自行删除 bat文件的基本应用bat是dos下的批处理文件 d是nt内核命令行环境的另一种批处理文件从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外 壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专 用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从 某个程度分析,batch, unix shell, awk, basic, perl等脚本语言都是一样的,只 不过应用的范围和解释的平台各有不同而己。甚至有些应用程序仍然沿用批处理 这一称呼,而其内容和扩展名与dos的批处理却又
19、完全不同。 首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部 分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下 的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创立和修改批 处理文件。 ====注===================批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普 通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的 应用越来越“边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行环 境中,否那么很多观念和设定都需要做比拟大的变动。 其次,批处理文
20、件是一种简单的程序,可以通过条件语句⑻和流程控制语句(got。) 来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命 令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的, 也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令 和外部命令),而批处理的能力主要取决于你所使用的命令。 ====注==================批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译 型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语 言文件或者c语言源代码,但只有编译连
21、接后的exe文件才可以称之为c语言 程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些 称谓的界限是比拟模糊的。 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所 在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个 良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后 将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch, 你就可以在任意位置运行所有你编写的批处理程序。 ====注=====纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到 低排
22、列分别是:DOSKEY宏命令(预先驻留内存),COMMAND 中的内 部命令(根据内存的环境随时进驻内存),以com为扩展名的可执行程序(由 command 直接载入内存),以exe位扩展名的可执行程序(由 command 重定位后载入内存),以bat位扩展名的批处理程序(由 command 解释分析,根据其内容按优先级顺序调用第2, 3, 4, 5种可执 行程序,分析一行,执行一行,文件本身不载入内存) 第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理 文件是自动运行批处理文件,每次系统启动时会自动运行该文件,你可以将系统 每次
23、启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和 磁盘缓存,设置系统环境变量等。下面是一个运行于Windows 98下的 autoexec.bat 的例如: @ECHO OFFPATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools; C:\SYST00LS;C:\WINT00L8;C:\BATCH LH SMARTDRV.EXE /XLH DOSKEY /insert LH CTMOUSE.EXE SETTEMP=D:\TEMP SET TMP=D:\TEMP====注===== AUTOEXEC.BAT
24、为DOS系统的自动运行批处理文件,由COMMAND 启 动时解释执行;而在Win9x环境中,不仅增加支持了 DOSSTART.BAT, WINSTART.BAT等许 多其它自动运行的批处理文件,对AUTOEXEC.BAT也增加 了 .DOS .W40 .BAK .OLD .PWS等许多变体以适应复杂的环境和多变的需求。 ====w川sort 编注=============以下关于命令的分类,有很多值得推敲的地方。常用命令中的@本不是命令,而 dir、copy等也很常用的命令却没有列入,而特殊命令中所有命令对我来说都是 常用命令。建议将批处理所引用的命令分为内部命令、外部命令、第三方程
25、序三 类。而内部命令和外部命令中别有一类是专用于或常用于批处理中的命令可称之 为”批处理命令”。 以下摘录MS-DOS 6.22帮助文档中关于”批处理命令”的文字,当然,其中有些 概念和定义已经有些落后了。 批处理命令批处理文件或批处理程序是一个包含假设干MS-DOS命令的正文文件,扩展名 为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批 处理程序中的命令。 任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS 命令是专门在批处理程序中使用的。 常用命令echo、@、calk pause> rem(小技巧:用::代替rem)是批处理文件
26、最常用的几 个命令,我们就从他们开始学起。 ====注===========首先,@不是一个命令,而是DOS批处理的一个特殊标记符,仅用于屏蔽命令 行回显.下面是DOS命令行或批处理中可能会见到的一些特殊标记符: CR(OD)命令行结束符 Escape(1B) ANSI转义字符引导符Space(20)常用的参数界定符 Tab(09);=不常用的参数界定符+ COPY命令文件连接符 *?文件通配符””字符串界定符 |命令管道符< > »文件重定向符 @命令行回显屏蔽符/参数开关引导符 :批处理标签引导符%批处理变量引导符 其次,::确实可以起到rem的注释作用,而且更简洁有效;但
27、有两点需要注意: 第一,除了 ::之外,任何以:开头的字符行,在批处理中都被视作标号,而直接 忽略其后的所有内容,只是为了与正常的标号相区别,建议使用goto所无法识 别的标号,即在:后紧跟一个非字母数字的一个特殊符号. 第二,与rem不同的是,::后的字符行在执行时不会回显,无论是否用echo on 翻开命令行回显状态,因为命令解释器不认为他是一个有效的命令行,就此点来 看,rem在某些场合下将比::更为适用;另外,rem可以用于config.sys文件 中. echo表示显示此命令后的字符echo off表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是
28、加在每个命令行的最前面,表示运行时不显示这一行 的命令行(只能影响当前行)。 call调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执 行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 pause运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续rem表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用 的(相当于程序中的注释)。 ====注=====此处的描述较为混乱,不如直接引用个命令的命令行帮助更为条理 ECHO当程序运行时,显示或隐藏批处理程序中的正文。
29、也可用于允许或禁止命令的回 显。 在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命 令。 使用ECHO命令可关闭此功能。 语法ECHO [ON|OFF] 假设要用echo命令显示一条命令,可用下述语法: echo [message]参数 ON|OFF指定是否允许命令的回显。假设要显示当前的ECHO的设置,可使用不带参数的 ECHO命令。 message指定让MS-DOS在屏幕上显示的正文。 CALL从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。 语法CALL [drive:][path]filename [batch-para
30、meters] 参数[drive:][path]filename 指定要调用的批处理程序的名字及其存放处。文件名必须用EAT作扩展名。 batch-parameters指定批处理程序所需的命令行信息。 PAUSE暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批 处 理程序中使用该命令。 语法PAUSE REM在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在 CONFIG.SYS 中也可以用分号;代替REM命令,但在批处理文件中那么不能替代)。 语法REM [string] 参数string 指定要屏蔽的命令或要包含的注解。
31、 例1:用edit编辑a.bat文件,输入以下内容后存盘为c:\a.bat,执行该批处理 文件后可实现:将根目录中所有文件写入a.txt中,启动UCDOS,进入WPS 等功能。 批处理文件的内容为:命令注释: @echo off不显示后续命令行及当前命令行dir c:\*.* >a.txt将c盘文件列表写入a.txt call c:\ucdos\ucdos.bat 调用 ucdosecho你好显示“你好” pause暂停,等待按键继续rem准备运行wps注释:准备运行wps cd ucdos 进入ucdos目录wps运行wps 批处理文件的参数批处理文件还可以像C语言的函数一样使
32、用参数(相当于DOS命令的命令行参 数),这需要用到一个参数表示符“%”。 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 4041 4243 4445 4647 19 ' For additional information contact: Environmental Systems Research Institu te. Inc. 'Attn: Contracts Dept. '380 New York Street 'Redlands, California, U.S.A. 92373 'Ema
33、il: Option Explicit 'vb version of the PathFinder object ,本地变量 Private mJpGeometricNetwork As esriGeoDatabase.IGeometncNetwork Private mJpMap As esriCarto.IMap Private mJpPoints As esriGeometry.IPointCollection Private m_ipPointToEID As esriNetworkAnalysis.IPointToEID ,返回结果变量 Private m_dbl
34、PathCost As Double Private m_ipEnumNetEID_Junctions As esriGeoDatabase.IEnumNetEID Private m_ipEnumNetEID_Edges As esriGeoDatabase.IEnumNetEID Private mJpPolyline As esriGeometry.IPolyline 'Optionally set the Map (e.g. the current map in ArcMap), 'otherwise a default map will be made (for IPoin
35、tToEID). 表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者 Tab)分隔的字符串。变量可以从%0到%9, %0表示批处理命令本身,其它参 数字符串用%1到%9顺序表示。 例2: C:根目录下有一批处理文件名为f.bat,内容为: @echo offformat %1 如果执行C:\>f a: 那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是 上面的命令运行时实际执行的是format a: 例3: C:根目录下一批处理文件名为t.bat,内容为: @echo offtype %1 type %2那么运行 C:\>
36、t a.txt b.txt %1 :表示 a.txt%2 :表示 b.txt 于是上面的命令将顺序地显示a.txt和b.txt文件的内容。 ====注===============参数在批处理中也作为变量处理,所以同样使用百分号作为引导符,其后跟0-9 中的一个数字构成参数引用符.引用符和参数之间(例如上文中的%1与a:) 的关系类似于变量指针与变量值的关系.当我们要引用第十一个或更多个参数 时,就必须移动DOS的参数起始指针.shift命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数,类似C语言中的指针操作.图示如下: 初始状态,cmd为命令名,可以用%0引用cm
37、d arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg 10 AAAAAAAAAAllllllllll %0 %1 %2 %3 %4 %5 %6 %7 %8 %9经过1次shHt后,cmd将无法被引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg 10AAAAAAAAAA llllllllll%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 经过2次sh设后,arg1也被废弃,%9指向为空,没有引用意义 cmd arg1 arg2 arg3 arg4 arg5 arg6
38、 arg7 arg8 arg9 arg 10AAAAAAAAA lllllllll%0 %1 %2 %3 %4 %5 %6 %7 %8 遗憾的是,win9x和DOS下均不支持shift的逆操作.只有在nt内核命令行环 境下,shift才支持/n参数,可以以第一参数为基准返复移动起始指针. 特殊命令if goto choice for是批处理文件中比拟高级的命令,如果这几个你用得很熟练, 你就是批处理文件的专家啦。 一、if是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 1、if [not]“参数"=="字符串”待执行的命令参数如果等于(not表示不等,
39、下同)指定的字符串,那么条件成立,运行命令,否 那么运行下一句。 例:if"%1“=="a"formata: if的命令行帮助中关于此点的描述为: IF [NOT] string1==string2 command在此有以下几点需要注意: 1. 包含字符串的双引号不是语法所必须的,而只是习惯上使用的一种“防空”字 符stringl未必是参数,它也可以是环境变量,循环变量以及其他字符串常量或 变量 2. command不是语法所必须的,string2后跟一个空格就可以构成一个有效的 命令行2、if [not] exist [路径\]文件名 待执行的命令 如果有指定的文件,那么条件成立
40、运行命令,否那么运行下一句。 如:if exist c:\config.sys type c:\config.sys表示如果存在c:\config.sys文件,那么显示它的内容。 ★★★★★★ ’4j ★★★★★★★★也可以使用以下的用法: if exist commanddevice是指DOS系统中己加载的设备,在win98 F通常有: AUX, PRN, CON, NULCOM1, COM2, COM3, COM4 LPT1, LPT2, LPT3, LPT4XMSXXXXO, EMMXXXX0 1. B: C: CLOCKS, CONFIGS, DblBuff$, IFS
41、HLP$具体的内容会因硬软件环境的不同而略有差异,使用这些设备名称时,需要保证 以下三点: 1 .该设备确实存在(由软件虚拟的设备除外).该设备驱动程序己加载(aux, pm等标准设备由系统缺省定义) 2 .该设备已准备好(主要是指a: b:com1..."p已…等)可通过命令mem/d | find "device', /i来检阅你的系统中所加载的设备 另外,在DOS系统中,设备也被认为是一种特殊的文件,而文件也可以称作字 符设备;因为设备(device)与文件都是使用句柄(handle)来管理的,句柄就是名 字,类似于文件名,只不过句柄不是应用于磁盘管理,而是应用于内存管理而已,
42、所谓设备加载也即指在内存中为其分配可引用的句柄. 3、if errorlevel v数字〉待执行的命令很多DOS程序在运行结束后会返回•个数字值用来表示程序运行的结果(或者 状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定 执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的 数字,那么条件成立,运行命令,否那么运行下一句。 如 if errorlevel 2 goto x2====注=========== 返回值从大到小的顺序排列不是必须的,而只是执行命令为goto时的习惯用 法,当使用set作为执行命令时,通常会从小到大顺序排
43、列,比方需将返回码 置入环境变量,就需使用以下的顺序形式: if errorlevel 1 set el=1if errorlevel 2 set el=2 if errorlevel 3 set el=3 if errorlevel 4 set el=4if errorlevel 5 set el=5 当然,也可以使用以下循环来替代,原理是一致的: for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e更高效简洁的用法,可以参考我写的另一篇关于获取errorlevel的文章 出现此种现象的原因是,if erro
44、rlevel比拟返回码的判断条件并非等于,而是大 于等于.由于goto的跳转特性,由小到大排序会导致在较小的返回码处就跳出; 而由于set命令的“重复”赋值特性,由大到小排序会导致较小的返回码”覆盖 ”较大的返回码. 另外,虽然if errorlevel=v数字,command也是有效的命令行,但也只是 command 解释命令行时将=作为命令行切分符而忽略掉罢了二、goto批处理文件运行到这里将跳到got。所指定的标号(标号即label,标号 用后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来 执行不同的命令组。 如: goto end:end ech
45、o this is the end标号用”:字符串”来定义,标号所在行不被执行。 ====w川sort编注label常被译为“标签”,但是这并不具有广泛的约定性. goto与:联用可实现执行中途的跳转,再结合if可实现执行过程的条件分支, 多个if即可实现命令的分组,类似C中switch case结构或者Basic中的 select case结构,大规模且结构化的命令分组即可实现高级语言中的函数功能. 以下是批处理和C/Basic在语法结构上的对照: Batch C / Basicgoto&: goto&: goto&:&if if{}&else{} / if&elseif&endif
46、goto&:&if... switch&case / select case goto&:&if&set&envar... function() / function(),sub()三、choice使用此命令可以让用户输入一个字符(用于选择),从而根据用户 的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不 同的命令。 注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的 choice命令语法会稍有不同,请用choice /?查看用法。 choice的命令语法(该语法为Windows 2003中choice命令的语法
47、其它版本 的choice的命令语法与此大同小异): CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]描述: 该工具允许用户从选择列表选择一个工程并返回所选工程的索引。 参数列表: /C choices指定要创立的选项列表。默认列表是“YN”。 /N在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。 /CS允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。 “timeout做出默认选择之前,暂停的秒数。可接受的值是从0到9999o如果指定了 0,就不会有暂停,默认选项
48、会得到选择。 /D choice在nnnn秒之后指定默认选项。字符必须在用/C选 项指定的一组选择中;同时,必须用/T指定nnnno/M text指定提示之前要显示的消息。如果没有指定,工具只 显不提不。 /?显示帮助消息。 注意: ERRORLEVEL环境变量被设置为从选择集选择的键索引。列出的第一个选 择返回1,第二个选择返回2,等等。如果用户按的键不是有效的选择, 该工具会发出警告响声。如果该工具检测到错误状态,它会返回255的 ERRORLEVEL值。如果用户按Ctrl+Break或Ctrl+C键,该工具会返回0 的ERRORLEVEL值。在一个批程序中使用ERRORLEVE
49、L参数时,将参数 降 序排列。 例如: CHOICE/? CHOICE/CYNC/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。” ====w川sort 编注=============================== 我列出win98下choice的用法帮助,己资区分Waits for the user to choose one of a set of choices. 等待用户选择一组待选字符中
50、的一个 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. 处理待选字符时大小写敏感 /T[:]c,nn Default choice to c after nn seco






