资源描述
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 IMPLIED
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 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 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 its 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()
'make 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 InitializeNetworkAndMap(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 ipFeatureClass 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 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 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 Newtork (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 optional 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.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 to 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 = 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
Next
'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 > 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 Function
附录资料:不需要的可以自行删除 bat文件的基本应用bat是dos下的批处理文件
d是nt内核命令行环境的另一种批处理文件从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外 壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专 用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从 某个程度分析,batch, unix shell, awk, basic, perl等脚本语言都是一样的,只 不过应用的范围和解释的平台各有不同而己。甚至有些应用程序仍然沿用批处理 这一称呼,而其内容和扩展名与dos的批处理却又完全不同。
首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部 分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下 的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创立和修改批 处理文件。
====注===================批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普 通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的 应用越来越“边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行环 境中,否那么很多观念和设定都需要做比拟大的变动。
其次,批处理文件是一种简单的程序,可以通过条件语句⑻和流程控制语句(got。) 来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命 令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的, 也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令 和外部命令),而批处理的能力主要取决于你所使用的命令。
====注==================批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译 型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语 言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c语言 程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些 称谓的界限是比拟模糊的。
第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所 在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个 良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后 将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch, 你就可以在任意位置运行所有你编写的批处理程序。
====注=====纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到 低排列分别是:DOSKEY宏命令(预先驻留内存),COMMAND 中的内 部命令(根据内存的环境随时进驻内存),以com为扩展名的可执行程序(由 command 直接载入内存),以exe位扩展名的可执行程序(由 command 重定位后载入内存),以bat位扩展名的批处理程序(由 command 解释分析,根据其内容按优先级顺序调用第2, 3, 4, 5种可执 行程序,分析一行,执行一行,文件本身不载入内存)
第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理 文件是自动运行批处理文件,每次系统启动时会自动运行该文件,你可以将系统 每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和 磁盘缓存,设置系统环境变量等。下面是一个运行于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为DOS系统的自动运行批处理文件,由COMMAND 启 动时解释执行;而在Win9x环境中,不仅增加支持了 DOSSTART.BAT, WINSTART.BAT等许 多其它自动运行的批处理文件,对AUTOEXEC.BAT也增加
了 .DOS .W40 .BAK .OLD .PWS等许多变体以适应复杂的环境和多变的需求。
====w川sort 编注=============以下关于命令的分类,有很多值得推敲的地方。常用命令中的@本不是命令,而 dir、copy等也很常用的命令却没有列入,而特殊命令中所有命令对我来说都是 常用命令。建议将批处理所引用的命令分为内部命令、外部命令、第三方程序三 类。而内部命令和外部命令中别有一类是专用于或常用于批处理中的命令可称之 为”批处理命令”。
以下摘录MS-DOS 6.22帮助文档中关于”批处理命令”的文字,当然,其中有些 概念和定义已经有些落后了。
批处理命令批处理文件或批处理程序是一个包含假设干MS-DOS命令的正文文件,扩展名 为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批 处理程序中的命令。
任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面MS-DOS 命令是专门在批处理程序中使用的。
常用命令echo、@、calk pause> rem(小技巧:用::代替rem)是批处理文件最常用的几 个命令,我们就从他们开始学起。
====注===========首先,@不是一个命令,而是DOS批处理的一个特殊标记符,仅用于屏蔽命令 行回显.下面是DOS命令行或批处理中可能会见到的一些特殊标记符: CR(OD)命令行结束符
Escape(1B) ANSI转义字符引导符Space(20)常用的参数界定符
Tab(09);=不常用的参数界定符+ COPY命令文件连接符
*?文件通配符””字符串界定符
|命令管道符< > »文件重定向符
@命令行回显屏蔽符/参数开关引导符
:批处理标签引导符%批处理变量引导符
其次,::确实可以起到rem的注释作用,而且更简洁有效;但有两点需要注意: 第一,除了 ::之外,任何以:开头的字符行,在批处理中都被视作标号,而直接 忽略其后的所有内容,只是为了与正常的标号相区别,建议使用goto所无法识 别的标号,即在:后紧跟一个非字母数字的一个特殊符号.
第二,与rem不同的是,::后的字符行在执行时不会回显,无论是否用echo on 翻开命令行回显状态,因为命令解释器不认为他是一个有效的命令行,就此点来 看,rem在某些场合下将比::更为适用;另外,rem可以用于config.sys文件 中.
echo表示显示此命令后的字符echo off表示在此语句后所有运行的命令都不显示命令行本身
@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行 的命令行(只能影响当前行)。
call调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执 行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 pause运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续rem表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用 的(相当于程序中的注释)。
====注=====此处的描述较为混乱,不如直接引用个命令的命令行帮助更为条理
ECHO当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回 显。
在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命 令。
使用ECHO命令可关闭此功能。
语法ECHO [ON|OFF]
假设要用echo命令显示一条命令,可用下述语法:
echo [message]参数
ON|OFF指定是否允许命令的回显。假设要显示当前的ECHO的设置,可使用不带参数的
ECHO命令。
message指定让MS-DOS在屏幕上显示的正文。
CALL从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。
语法CALL [drive:][path]filename [batch-parameters]
参数[drive:][path]filename
指定要调用的批处理程序的名字及其存放处。文件名必须用EAT作扩展名。
batch-parameters指定批处理程序所需的命令行信息。
PAUSE暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批 处
理程序中使用该命令。
语法PAUSE
REM在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在 CONFIG.SYS
中也可以用分号;代替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:\ucdos\ucdos.bat 调用 ucdosecho你好显示“你好”
pause暂停,等待按键继续rem准备运行wps注释:准备运行wps
cd ucdos 进入ucdos目录wps运行wps
批处理文件的参数批处理文件还可以像C语言的函数一样使用参数(相当于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
'Email:
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_dblPathCost 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 IPointToEID).
表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者 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:\>t a.txt b.txt
%1 :表示 a.txt%2 :表示 b.txt
于是上面的命令将顺序地显示a.txt和b.txt文件的内容。
====注===============参数在批处理中也作为变量处理,所以同样使用百分号作为引导符,其后跟0-9 中的一个数字构成参数引用符.引用符和参数之间(例如上文中的%1与a:) 的关系类似于变量指针与变量值的关系.当我们要引用第十一个或更多个参数 时,就必须移动DOS的参数起始指针.shift命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数,类似C语言中的指针操作.图示如下:
初始状态,cmd为命令名,可以用%0引用cmd 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 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表示不等,下同)指定的字符串,那么条件成立,运行命令,否 那么运行下一句。
例:if"%1“=="a"formata:
if的命令行帮助中关于此点的描述为:
IF [NOT] string1==string2 command在此有以下几点需要注意:
1. 包含字符串的双引号不是语法所必须的,而只是习惯上使用的一种“防空”字 符stringl未必是参数,它也可以是环境变量,循环变量以及其他字符串常量或 变量
2. command不是语法所必须的,string2后跟一个空格就可以构成一个有效的 命令行2、if [not] exist [路径\]文件名 待执行的命令
如果有指定的文件,那么条件成立,运行命令,否那么运行下一句。
如: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$HLP$具体的内容会因硬软件环境的不同而略有差异,使用这些设备名称时,需要保证 以下三点:
1 .该设备确实存在(由软件虚拟的设备除外).该设备驱动程序己加载(aux, pm等标准设备由系统缺省定义)
2 .该设备已准备好(主要是指a: b:com1..."p已…等)可通过命令mem/d | find "device', /i来检阅你的系统中所加载的设备
另外,在DOS系统中,设备也被认为是一种特殊的文件,而文件也可以称作字 符设备;因为设备(device)与文件都是使用句柄(handle)来管理的,句柄就是名 字,类似于文件名,只不过句柄不是应用于磁盘管理,而是应用于内存管理而已, 所谓设备加载也即指在内存中为其分配可引用的句柄.
3、if errorlevel v数字〉待执行的命令很多DOS程序在运行结束后会返回•个数字值用来表示程序运行的结果(或者 状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定 执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的 数字,那么条件成立,运行命令,否那么运行下一句。
如 if errorlevel 2 goto x2====注===========
返回值从大到小的顺序排列不是必须的,而只是执行命令为goto时的习惯用 法,当使用set作为执行命令时,通常会从小到大顺序排列,比方需将返回码 置入环境变量,就需使用以下的顺序形式:
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 errorlevel比拟返回码的判断条件并非等于,而是大 于等于.由于goto的跳转特性,由小到大排序会导致在较小的返回码处就跳出; 而由于set命令的“重复”赋值特性,由大到小排序会导致较小的返回码”覆盖 ”较大的返回码.
另外,虽然if errorlevel=v数字,command也是有效的命令行,但也只是 command 解释命令行时将=作为命令行切分符而忽略掉罢了二、goto批处理文件运行到这里将跳到got。所指定的标号(标号即label,标号 用后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来 执行不同的命令组。
如:
goto end:end
echo 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&endifgoto&:&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命令的语法,其它版本 的choice的命令语法与此大同小异):
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]描述:
该工具允许用户从选择列表选择一个工程并返回所选工程的索引。
参数列表:
/C choices指定要创立的选项列表。默认列表是“YN”。
/N在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。
/CS允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。
“timeout做出默认选择之前,暂停的秒数。可接受的值是从0到9999o如果指定了 0,就不会有暂停,默认选项
会得到选择。
/D choice在nnnn秒之后指定默认选项。字符必须在用/C选 项指定的一组选择中;同时,必须用/T指定nnnno/M text指定提示之前要显示的消息。如果没有指定,工具只
显不提不。
/?显示帮助消息。
注意:
ERRORLEVEL环境变量被设置为从选择集选择的键索引。列出的第一个选 择返回1,第二个选择返回2,等等。如果用户按的键不是有效的选择, 该工具会发出警告响声。如果该工具检测到错误状态,它会返回255的 ERRORLEVEL值。如果用户按Ctrl+Break或Ctrl+C键,该工具会返回0 的ERRORLEVEL值。在一个批程序中使用ERRORLEVEL参数时,将参数 降 序排列。
例如:
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. 等待用户选择一组待选字符中的一个
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
展开阅读全文