For循环语句详解Word格式.docx
- 文档编号:8457168
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:20
- 大小:25.33KB
For循环语句详解Word格式.docx
《For循环语句详解Word格式.docx》由会员分享,可在线阅读,更多相关《For循环语句详解Word格式.docx(20页珍藏版)》请在冰点文库上搜索。
:
符号,例如:
开始清除屏幕
Rem开始输出
先到这里吧!
我在
变量-DOSBAT批处理编程入门教程
(二)
既然我们称之为批处理编程,那么变量是少不了的,在批处理中既可以自定义变量也可以使用系统变量,我们先来了解一下自定义变量。
(1)自定义变量
请看如下命令:
setmyname=
setmyage=3
echo%myname%isabout%myage%yearsold
运行结果:
isabout3yearsold
关键是set命令的使用,setvar=变量值,var是变量的名称,当需要在其它地方使用这个变量时,需要用两个%括起来,如%var%
(2)变量的算术运算
在进行算术运算时,我们需要给set命令加上/a参数,后面再跟表达式。
例如:
setvar=100
set/avar=200+10
set/avar+=15
echo%var%
运行结果为225
这里的var+=15相当于var=%var%+15
(3)变量的逻辑运算与取余运算
需要将运算符用双引号表示出来:
set/avar=3"
&
"
7
set/avar=2"
^"
6
<
3
set/avar=256"
>
2
set/avar=83"
%"
10
批处理支持的运算符按优先权顺序:
()
-分组
!
~-
-一元运算符
*/%
-算数运算符
+-
>
-逻辑移位
-按位“与”
^
-按位“异”
|
-按位“或”
=*=/=%=+=-=
-复合赋值运算符
=^=|=<
=>
=
-表达式分隔符
表达式分隔符的作用是在一行中写多个表达式,例如:
set/avar1=1,var2=8
echo%var1%%var2%
(4)获取键盘输入到变量
set命令有一个/p参数,可以帮助我们获得键盘输入:
set/pvar=-^>
请选择:
echo您的选择是:
%var%
这在我们显示菜单供用户选择的时候是非常有用的,当加上/p参数,等号后面的内容就是用于显示的字符,并非给变量赋值。
系统变量-DOSBAT批处理编程入门教程(三)
系统变量实际是操作系统中的系统变量,我们在命令行中可以直接使用。
这些系统变量有些可以读写,有些是只读的。
下面我们列举一下系统变量及其意义以便使用时参考之用。
%ALLUSERSPROFILE%
(本地)返回“所有用户”配置文件的位置。
%APPDATA%
(本地)返回默认情况下应用程序存储数据的位置。
%CD%(本地)返回当前目录字符串。
%CMDCMDLINE%(本地)返回用来启动当前的Cmd.exe的准确命令行。
%CMDEXTVERSION%(系统)返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME%
(系统)返回计算机的名称。
%COMSPEC%
(系统)返回命令行解释器可执行程序的准确路径。
%DATE%
(系统)返回当前日期。
使用与date/t命令相同的格式。
由Cmd.exe生成。
有关date命令的详细信息,请参阅Date。
%ERRORLEVEL%
(系统)返回上一条命令的错误代码。
通常用非零值表示错误。
%HOMEDRIVE%
(系统)返回连接到用户主目录的本地工作站驱动器号。
基于主目录值而设置。
用户主目录是在“本地用户和组”中指定的。
%HOMEPATH%
(系统)返回用户主目录的完整路径。
%HOMESHARE%
(系统)返回用户的共享主目录的网络路径。
%LOGONSERVER%
(本地)返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS%
(系统)指定安装在计算机上的处理器的数目。
%OS%
(系统)返回操作(系统)名称。
Windows2000显示其操作系统为Windows_NT。
%PATH%(系统)指定可执行文件的搜索路径。
%PATHEXT%(系统)返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE%
(系统)返回处理器的芯片体系结构。
值:
x86或IA64基于Itanium
%PROCESSOR_IDENTFIER%(系统)返回处理器说明。
%PROCESSOR_LEVEL%
(系统)返回计算机上安装的处理器的型号。
%PROCESSOR_REVISION%(系统)返回处理器的版本号。
%PROMPT%(本地)返回当前解释程序的命令提示符设置。
%RANDOM%(系统)返回0到32767之间的任意十进制数字。
%SYSTEMDRIVE%(系统)返回包含Windowsserveroperatingsystem根目录(即系统根目录)的驱动器。
%SYSTEMROOT%
(系统)返回Windowsserveroperatingsystem根目录的位置。
%TEMP%和%TMP%(系统)和用户返回对当前登录用户可用的应用程序所使用的默认临时目录。
有些应用程序需要TEMP,而其他应用程序则需要TMP。
%TIME%(系统)返回当前时间。
使用与time/t命令相同的格式。
有关time命令的详细信息,请参阅Time。
%USERDOMAIN%(本地)返回包含用户帐户的域的名称。
%USERNAME%(本地)返回当前登录的用户的名称。
%USERPROFILE%(本地)返回当前用户的配置文件的位置。
%WINDIR%(系统)返回操作系统目录的位置。
在这些系统变量中,最常用的是目录相关的系统变量,例如:
6
7
8
将1.doc复制到Windows目录下
copy1.doc"
%WINDIR%\"
将2.doc复制到TEMP目录下
copy2.doc"
%TEMP%\"
将3.doc复制到当前账号的启动中
copy3.doc"
%USERPROFILE%\「开始」菜单\程序\启动\"
程序流程控制基础-DOSBAT批处理编程入门教程(四)
批处理中的流程控制语句主要可以分为三类:
选择语句、循环语句和跳转语句。
在每种语句中都会执行一个检测,检测一个布尔型值,该布尔型值控制批处理的执行流程。
(1)选择语句ifelse
先看例子
1@echooff
2setvar="
3if%var%=="
setvar=10
4if%var%GEQ10echo值大于等于10
5pause
代码中,用if语句判断var变量的值,如果为空,则赋值10,然后第2条if语句判断var的值是
不是大于等于10并输出结果。
这里用到了比较运算符GEQ,其它还有许多比较运算符:
EQU-等于
NEQ-不等于
LSS-小于
LEQ-小于或等于
GTR-大于
GEQ-大于或等于
另外,我们可以用not将布尔值取反,例如:
1ifnot%var%LSS10echo值不小于10
再来看看使用else的例子:
4if%var%GTR10(echo值大于10)else(echo值小于等于10)
5pause
代码中,如果var大于10,输出“值大于10”,否则输出“值小于等于10”
另外,if有一个/i参数,表明忽略大小写,例如:
1setvar="
aBc"
2if/i%var%=="
abc"
echoabc
(2)循环语句for
这里只简单介绍一下for配合/l参数的使用方法,更多使用方法请看下节。
格式是这样的:
FOR/L%variableIN(start,step,end)DOcommand[command-parameters]
先看例子:
1for/l%%iin(0,1,5)doecho%%i
运行结果输出:
012345
这条语句的意思是变量%%i从0到5,递增1循环
其中的start,step,end可以使用变量,例如:
1setbegin=5
2setend=1
3setstep=-1
4for/l%%iin(%begin%,%step%,%end%)doecho%%i
(3)跳转语句goto
goto语句的作用是跳转到指定标签段,首先我们需要定义标签段,例如:
exitdoor
需要跳转到exitdoor的地方只要gotoexitdoor即可,一般我们配合if来使用:
1@echooff
2set/pinput=请选择
(1)退出,
(2)继续:
3if%input%==1gotoexitdoor
4echo继续工作...
5pause
6exit
7
8:
9echo下班了!
10,pause
这个例子中从键盘获取输入,如果是1,则跳到exitdoor处,否则继续向下执行。
For循环语句详解-DOSBAT批处理编程入门教程(五)
格式:
FOR[参数]%%变量名IN(相关文件或命令)
DO执行的命令
作用:
对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果。
注意:
在批处理文件中使用FOR命令时,指定变量请使用%%variable,而不要用%variable。
变量名称是区分大小写的,所以%i不同于%I.
关于:
for命令可以带参数或不带参数,带参数时支持以下参数:
/d/l/r/f
下面分别解释一下
零:
无参数时:
FOR%variableIN(set)DOcommand[command-parameters]
%variable
指定一个单一字母可替换的参数。
(set)
指定一个或一组文件。
可以使用通配符。
command
指定对每个文件执行的命令。
command-parameters
为特定命令指定参数或命令行开关。
示例:
for%%iin(t*.*)doecho%%i--显示当前目录下与t*.*相匹配的文件(只显示文件名,不显示路径)
for%%iin(d:
\mydocuments\*.doc)do@echo%%i--显示d:
\mydocuments\目录下与*.doc相匹配的文件
一、参数/d(参数只能显示当前目录下的目录名字)
格式:
FOR/D%variableIN(set)DOcommand[command-parameters]
这个参数主要用于目录搜索,不会搜索文件,/D参数只能显示当前目录下的目录名字。
(TTT特别说明:
只会搜索指定目录下的目录,不会搜索再下一级的目录。
)
for/d%%iin(c:
\*)doecho%%i
--显示c盘根目录下的所有目录
for/d%%iin(?
?
)doecho%%i
--显示当前目录下名字只有1-3个字母的目录
二、参数/R(搜索指定路径及所有子目录中与set相符合的所有文件)
FOR/R[[drive:
]path]%variableIN(set)DOcommand[command-parameters]
此命令会搜索指定路径及所有子目录中与set相符合的所有文件,注意是指定路径及所有子目录。
1、set中的文件名如果含有通配符(?
或*),则列举/R参数指定的目录及其下面的所用子目录中与set相符合的所有文件,无相符文件的目录则不列举。
2、如果set中为具体文件名,不含通配符,则枚举该目录树(即列举该目录及其下面的所有子目录)(并在后面加上具体的文件名),而不管set中的指定文件是否存在。
例:
for/rc:
\%%iin(*.exe)doecho%%i--把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来了!
for/rc:
\%%iin(boot.ini)doecho%%i--枚举了c盘所有目录
for/rd:
\backup%%iin
(1)doecho%%i
--枚举d\backup目录
\%%iin(boot.ini)doifexist%%iecho%%i
--很好的搜索命令,列举boot.ini存在的目录
三、参数/L(该集表示以增量形式从开始到结束的一个数字序列。
可以使用负的Step)
该集表示以增量形式从开始到结束的一个数字序列。
可以使用负的Step
for/l%%iin(1,1,5)do@echo%%i
--输出12345
for/l%%iin(1,2,10)do@echo%%i
--输出1,3,5,7,9
for/l%%iin(100,-20,1)do@echo%%i
--输出100,80,60,40,20
for/l%%iin(1,1,5)dostartcmd
--打开5个CMD窗口
for/l%%iin(1,1,5)domd%%i
--建立从1~5共5个文件夹
for/l%%iin(1,1,5)dord/q%%i
--删除从1~5共5个文件夹
四、参数/F
FOR/F["
options"
]%%iIN(file)DOcommand
]%%iIN("
string"
)DOcommand
]%%iIN('
command'
这个可能是最常用的,也是最强的命令,主要用来处理文件和一些命令的输出结果。
file代表一个或多个文件
string代表字符串
command代表命令
["
]可选
对于FOR/F%%iIN(file)DOcommand
file为文件名,按照官方的说法是,for会依次将file中的文件打开,并且在进行到下一个文件之前将每个文件读取到内存,按照每一行分成一个一个的元素,忽略空白的行,看个例子。
假如文件a.txt中有如下内容:
第1行第1列第1行第2列第1行第3列
第2行第1列第2行第2列第2行第3列
第3行第1列第3行第2列第3行第3列
你想显示a.txt中的内容,会用什么命令呢?
当然是type,typea.txt
for也可以完成同样的命令:
for/f%%iin(a.txt)doecho%%i
还是先从括号执行,因为含有参数/f,所以for会先打开a.txt,然后读出a.txt里面的所有内容,把它作为一个集合,并且以每一行作为一个元素,所以会产生这样的集合,
{“第1行第1列第1行第2列第1行第3列”,rem第一个元素
“第2行第1列第2行第2列第2行第3列”,rem第二个元素
“第3行第1列第3行第2列第3行第3列”}
rem第三个元素
集合中只有3个元素,同样用%%i依次代替每个元素,然后执行do后面的命令。
具体过程:
用%%i代替“第1行第1列第1行第2列第1行第3列”,执行do后面的echo%%i,显示“第1行第1列第1行第2列第1行第3列”,
用%%i代替“第2行第1列第2行第2列第2行第3列”,执行echo%%i,显示“第2行第1列第2行第2列第2行第3列”,
依次,直到每个元素都代替完为止。
为了加强理解/f的作用,请执行一下两个命令,对比即可明白:
for/f%%iin(a.txt)doecho%%irem这个会显示a.txt里面的内容,因为/f的作用,会读出a.txt中
的内容。
for%%iin(a.txt)doecho%%irem而这个只会显示a.txt这个名字,并不会读取其中的内容。
通过上面的学习,我们发现for/f会默认以每一行来作为一个元素,但是如果我们还想把每一行再分解更小的内容,该怎么办呢?
不用担心,for命令还为我们提供了更详细的参数,使我们将每一行分为更小的元素成为可能。
它们就是:
delims和tokens
delims用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键
比如,还是上面的文件,我们执行下面的命令:
for/f"
delims="
%%iin(a.txt)doecho%%i
显示的结果是:
第1行第1列
第2行第1列
第3行第1列
为什么是这样的呢。
因为这里有了delims这个参数,=后面有一个空格,意思是再将每个元素以空格分割,默认是只取分割之后的第一个元素。
执行过程是:
将第一个元素“第1行第1列第1行第2列第1行第3列”分成三个元素:
“第1行第1列”“第1行第2列”“第1行第3列”,它默认只取第一个,即“第1行第1列”,然后执行do后面的命令,依次类推。
但是这样还是有局限的,如果我们想要每一行的第二列元素,那又如何呢?
这时候,tokens跳出来说,我能做到。
它的作用就是当你通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个。
还是上面的例子,执行如下命令:
tokens=2delims="
%%iin(a.txt)doec
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- For 循环 语句 详解