dos 流程跳转 goto_DOS/BAT

如果对不同的情况,需要执行不同的既定操作,若还是按照常规的执行流程的话,是无法完成任务的,这个时候,就需要引入流程跳转的概念,动用流程跳转语句 goto 了。流程跳转的含义是:改变默认的执行顺序,强制跳转到指定的位置执行特定的程序块。

  先来看个例子:假设需要判断用户输入的是A还是B,代码可以写成这样:
@echo off
set /p input=请输入字母A或B:
if "%input%"=="A" goto A
if "%input%"=="B" goto B
pause
exit

:A
echo 您输入的字母是A
pause
exit

:B
echo 您输入的字母是B
pause
exit

  按照一般的执行流程,所有的代码都会自上而下逐行执行一次,结果将显示"您输入的字母是A"和"您输入的字母是B"这两行内容,很显然,这是达不到我们的要求的;但是,实际的结果是:如果您输入的字母非A即B,则结果只会显示"您输入的字母是A"或者"您输入的字母是B";也就是说,代码的执行顺序发生了改变,不再一成不变地自上而下逐行执行了:当输入字母A后,将执行第一条if语句,此条语句执行后,将跳转到标签段:A,从而绕过了第一条if语句和:A之间的所有代码行;当输入字母B后,将执行头两条if语句,当执行完第二条if语句后,将跳转到标签段:B,从而绕过了第二条if语句和:B之间的所有代码行。

  从上面的例子可以看到,要让goto语句起作用,还需要:A或:B之类的标签段的配合。所谓的标签段,就是这样的一些代码块:在首行上以单个冒号打头,其后紧跟一串字符,第二行及其之后的所有行为代码语句行。在这里,第一行的冒号是标签标志,紧跟它之后的字符串是标签名,两者合称标签。goto语句后面的部分为标签名,指引着该语句执行完之后该跳到转何方,标签则接收goto语句的跳转指令,引导着goto语句的后续操作。goto语句和标签互相呼应,在实现流程跳转时相辅相成,缺一不可。

  下面说一下使用跳转语句goto的注意事项:

  1、goto语句和标签要互相呼应,不能只有goto语句而没有相应的标签段,否则,程序将找不到相应的标签段而直接退出;只有标签段而没有goto语句是允许的,但不能实现流程跳转功能,从代码精简的角度来看,有标签段而没有goto语句,则此标签是多余的,可以精简掉;
  2、若有多个标签段,则需要注意标签段之间是否需要添加合适的退出语句来终止程序继续向下执行,这是很多新手很容易犯错的地方,需要谨慎。以上面这段代码为例,如果去掉:A和:B之间的exit语句,那么,当输入字母A之后,结果将同时显示"您输入的字母是A"和"您输入的字母是B"这两行内容,而保留exit语句将只会在显示"您输入的字母是A"后,按任意键推出批处理程序,因为批处理是自上而下逐行执行的,即使用goto语句跳转之后,在新的位置上,这一执行流程仍然会保持,直到碰上另一个流程跳转语句,执行过程并不会在两个标签段之间自动终止。
  3、标签名只可以使用常量,而不能使用变量;
  4、若有同名的标签段,将执行位于最顶层的标签段,其后的标签段是否得到执行,将视具体的情况加以处理。

时间: 2024-09-17 04:45:48

dos 流程跳转 goto_DOS/BAT的相关文章

cmd goto命令 流程跳转_DOS/BAT

如果对不同的情况,需要执行不同的既定操作,若还是按照常规的执行流程的话,是无法完成任务的,这个时候,就需要引入流程跳转的概念,动用流程跳转语句 goto 了.流程跳转的含义是:改变默认的执行顺序,强制跳转到指定的位置执行特定的程序块. 先来看个例子:假设需要判断用户输入的是A还是B,代码可以写成这样: 复制代码 代码如下: @echo off set /p input=请输入字母A或B: if "%input%"=="A" goto A if "%inpu

dos 目录跳转 cd_DOS/BAT

例如,我们打开命令行窗口的时候,一般是这样操作的:在桌面左下角找到"开始"菜单,打开"运行",输入"cmd",回车.这个时候,命令行窗口默认的当前目录位于当前用户所在的路径下,比如:C:\Documents and Settings\JM,如下图所示.一般而言,这个目录下并没有我们想要处理的文件,我们很可能需要跳转到其他目录,比如说:C盘根目录,这个时候,我们就需要使用cd来实现目录的跳转了:cd c:\. cd的全称是Change Direct

dos系统不能启动AUTOEXEC.BAT

问题描述 dos系统不能启动AUTOEXEC.BAT 有个老产品,dos系统,更换了一个command.com文件后,导致不能引导AUTOEXEC.BAT,所以不能引导应用程序,直接提示enter new date,哪位大神来解释下啊!谢谢!

dos if 条件判断_DOS/BAT

1.判断驱动器.文件或文件夹是否存在,用 if exist 语句: 2.判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句: 3.判断某两个数值是否相等,用 if 数值1 equ 数值2 语句: 4.判断某个变量是否已经被赋值,用 if defined str 语句: if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2. 对于以上四种情形,可以分别

DOS批处理高级教程 第七章 DOS批处理编程高级技巧_DOS/BAT

一.交互界面设计 没啥说的,看看高手设计的菜单界面吧: @echo off cls title 终极多功能修复 :menu cls color 0A echo. echo ============================== echo 请选择要进行的操作,然后按回车 echo ============================== echo. echo 1.网络修复及上网相关设置,修复IE,自定义屏蔽网站 echo. echo 2.病毒专杀工具,端口关闭工具,关闭自动播放 echo

常用dos命令及语法_DOS/BAT

常用dos命令及语法 cd 改变当前目录,dir 列出 文件 和 文件夹名, dir /ad /b  指列出来 当前 目录下的 文件夹 echo       ECHO 提示信息内容  #解释:输出提示信息      如果想 关闭"ECHO "命令行 自身的显示,则需要在该命令行前加上"@"  ,如:@echo 不显示本行的echo       关闭DOS命令提示符,在DOS提示符状态下键入ECHO OFF,能够关闭DOS提示符的显示使屏幕只留下光标,直至键入ECHO

DOS命令全集(三)_DOS/BAT

   (六)ATTRIB--修改文件属性命令 1.功能:修改指定文件的属性.(文件属性参见2.5.4(二)文件属性一节) 2.类型:外部命令. 3.格式:ATTRIB[文件名][R][--R][A][--A][H][--H][S][--S][/S] 4.使用说明: (1)选用R参数,将指定文件设为只读属性,使得该文件只能读取,无法写入数据或删除:选用--R参数,去除只读属性: (2)选用A参数,将文件设置为档案属性:选用--A参数,去除档案属性: (3)选用H参数,将文件调协为隐含属性:选用--

DUSE让DOS支持USB驱动器_DOS/BAT

不知有多少人以为DOS不支持USB设备.因为USB设备标准是在Windows 95之后才制定的,而当时DOS的老东家微软早已决定放弃继续发展其MS-DOS了.这样一来,当您想在DOS下操作USB设备的时候,往往只能望洋兴叹了.即使您使用的系统是Windows,当Windows崩溃要备份或恢复数据时,平时使用的USB硬盘等USB设备也都成了摆设.     幸好微软并不能决定一切,Pocketec公司开发的DUSE就为我们提供了在DOS下对USB存储设备(USB硬盘.软驱.光驱)的支持,不过它目前还

DOS命令详解_DOS/BAT

一.DIR 命令的格式: dir [D:][PATH][NAME][[/A][:attrib]][/o:[sorted][/s][/b][/l][/c[h] (1)dir /a:attrib 缺省包含所有文件(系统文件.隐含文件) attrib[:][h/-h]只显示隐含文件或非隐含文件. [r/-r]只显示只读文件或非只读文件 [s/-s]只显示系统文件或非系统文件 [a/-a]只显示要归档文件或非归档文件 (2)/o[:]sorted:缺省完全按字母顺序,子目录显示在文件之前 /o[n/-n