批处理程序中for goto和if分别是如何使用的!

另外帮我说一下,详细的使用教程,以及它们的环境变量!

第1个回答  2013-06-13
【If 命令】

if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:
1、if "参数" == "字符串" 待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms

2、if exist 文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如if exist config.sys edit config.sys

3、if errorlevel / if not errorlevel 数字 待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。

【Goto 命令】

指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

【for命令】

温馨提示:如果你初次接触批处理这可以先到这里。 对所有的批处理初学者来说,for的应用是最难理解以及掌握的。

本文由浅入深,为大家专门讲解for的用法,希望大家喜 欢。 首先应该明确的是,for不是一个简单的命令,它的用法比较复杂,它还可以带四个参数(/L /D /R /F),其中:/L和/F参数是 最经常用到的。当然,它本身也可以不带参数,下面我们通过具体的例子来讲解for的运用。

1、不带参数的for:
让我们先来看一个示例:
@echo off
for %%i in (1 2 3 4 5) do echo %%i
pause
将以上代码保存为批处理文件(如何保存?),然后运行,可以发现屏幕上显示1 2 3 4 5(每字一行) 是不是明白了一些?
它的整个运行机制我们可以这样看:for不停的从括号中拿出5个“东西”来(以空格做间隔),并将这5个“东西”依次传给临时变量%%i,同时把这个变量echo出来.... 从这个例子我们可以看出,for的基本用法是: for 变量 in (目标) do 干什么? 变量常用%%i 来表示,当然也可以换成%%j;目标就是待处理的对象集合,比如这里的1 2 3 4 5;这里的干什么的内容为:批处理命令。
【相关习题:】将你的名字用for命令分三行显示出来!!!

2、带参数 /L 的for (这里的 参数/L 可以理解为 "list" 的意思,代表一个数列)
先看测试代码:
@echo off
for /l %%i in (1 1 5) do echo %%i
pause
显示结果也为:1 2 3 4 5(每字一行) 它的意思和上面的意思差不多,但是括号中的对象却不需要 写成 1 2 3 4 5 的形式了,而是:1 1 5,因为它启用了参数 /L ,就是告诉for,这个括号里的对象是个数列,怎样的数列?就是以 1 开始,步长 为1 ,结束值为5的一个等差数列,
再举个实例:
::显示 从 10 - 20 的所有偶数:
@echo off
for /l %%i in (10 2 20) do echo %%i
pause

3、带参数 /f 的for(这里的参数/F可以理解为“file”的意思,代码处理对象为文本串)
参考教程:for 命令 /f 参数 通俗讲解

4、for的 /D 和/R 参数(这两个参数个人比较少用)
1>/D参数(常用来查询 当前目录 或者 指定目录的文件夹)
基本用法:FOR /D %variable IN (set) DO command [command-parameters] 如:查询F盘根目录下的文件夹
@echo off
for /d %%i in (f:\*) do echo %%i
pause>nul
如果省略 括号中的 "f:\",则会直接查询 批处理 所在目录的文件夹
假设 本批处理文件 保存在:F:\test下运行以下批处理代码,将会查询 F:\test下的文件夹
@echo off
for /d %%i in (*) do echo %%i
pause>nul
2> /r参数
基本用法:FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] 检查以 [drive:]path 为根的目录树中,所有符合(set)的文件或者文件夹。如果在 /R 后没有指定目录,则使用当前目录。
如果集仅为一个单点(.)字符,则枚举该目录树。

用法示例: 枚举F:盘下所有的 文件
@echo off
for /r f:\ %%i in (*) do echo %%i
pause>nul

枚举F:盘下所有的 .bat文件(包括子目录),则:
@echo off
for /r f:\ %%i in (*.bat) do echo %%i
pause>nul

如果省略以上代码中的F:\,则会列举当前目录 所有符合(set)的文件
如:列举批处理所在目录的 所有 批处理文件(包括子目录)
@echo off
for /r %%i in (*.bat) do echo %%i
pause>nul本回答被网友采纳
相似回答