2024年4月22日发(作者:)
批处理详解
一:批处理是什么
批处理是什么?我们学习批处理,先弄懂这个问题,个人认为第一批处理是一个文本文件,
可以使用任何一种文本编辑器编写,正是基于这个特点有时候我们不想让别人看到我们书写
的代码而使用bat2com和bat2exe将其转换成exe文件,第二批处理是一种解释性程序,
它的功能类似于意念,说强很强说弱又很弱,说它是一种程序更重要的是它和其他编程语言
一样有自己的控制结构!而且这个程序有个特点就是解释执行即逐行逐句的翻译执行,这个
特点我们在后面还会提到!第三任何批处理都是一个DOS的外部命令,这使得我们在编写批
处理的时候可以使用参数,这里的参数不是指DOS命令的命令参数,后面的内容会做解释!
学习批处理第一个需要解决的问题就是特殊符号!
二:批处理中的特殊符号
学会批处理中的特殊符号对于我们学习编写批处理是非常有用的!这里我做了一下简单的
整理——:、::、&、&&、>、>>、|、||、nul、con、%、(),成对出现的东西是非常容易记忆
的,下面我们结合具体的操作仔细的理解!
1:“:”与“::”
“::”与rem命令是一样效果,起解释说明的作用,和C++中的/……/一样!
“:”符号的作用是标记一个标签与goto语句一起使用,其格式为: label,这点与C或C++中
的goto语句是截然相反的,在C或者C++中的格式为label:!举例说明:
@echo off
::标签的使用与goto语句
goto test
:test
echo goto语句test
当然goto语句的跳转是有条件,在后面的批处理结构中你会发现goto语句的魅力,这里只
是为了更好的理解上面的两个特殊符号!
2:“&”与“&&”
“&”与“&&”符号的作用是连接两个命令同时执行,区别在于前者不管第一条命令的执行是否
成功,都会执行第二条命令,而后者只有在第一条命令执行成功以后才执行后面的命令!
例子我们在学完第三组命令“|”与“||”在举!
3:“|”与“||”
“|”符号的作用是将|前执行的命令结果作为其后DOS命令的参数,比如dir|find "2008",dir
命令查看当前目录的文件,然后所有目录的列表作为find "2008"的参数,也就是从该文件
目录下查找所有2008年建立的文件!
“||”符号的作用与“|”是截然不同的,它也是连接两个命令同时执行,不过是第一条命令执行
错误的条件下才会执行第二条命令!
编写如下代码,保存为:
@echo off
set a=
set/p a=请输入要查找的用户名
net user %a% >nul 2>nul && echo 存在该用户 || echo 用户不存在.
这是Visual bat程序安装目录中非常经典的一个批处理,它的作用是检查用户输入的帐户
是否存在,当用户输入账户后,比如hacker,然后执行net user hacker,如果是存在该帐户
也就是说命令执行成功了,那么就显示存在该用户,如果不存在该帐户也就是net user
hacker命令没执行成功,就显示用户不存在,结合上面的内容我想您已经理解“||”“&&”“&”
三者的微妙之处了!
4:“nul”和“con”
在中,我们看到>nul 2>nul的句子,前者是当命令执行成功后不显示回显,
比如net user hacker /ad >nul这样用户添加成功后也不会有提示,后者是命令执行错误后
不显示回显,两者同时使用的结果就是不论命令执行是否成功,都不显示任何信息!对于“nul”
这个特殊符号我们可以理解为空字符的意思,除了不显示回显,还可以使用它删除文件,
copy nul >或者type nul>,这种删除方式是比较安全的,我想当初李开复如果使用
这种方法删除文件,也许就不会招来因为跳槽而导致的官司!
对于“con”,我们可以简单的理解为屏幕,在cmd下我们输入:copy *.txt con,可以连续打开
多个txt文件以方便我们查看!
5:“>”与“>>”
“>”它的作用是创建一个文件比如echo hacking >,而“>>”的作用是将内容追加到一个
文件后面,比如前面的内容为hacking,在CMD下输入echo hacker>>,那么
的内容为hackinghacker!
6:“%”与“()”
把这两个符号放一起有点牵强,“()”起分隔符的作用,在后面的批处理中你会理解这点,在
批处理我们可以理解为存在两个分隔符一是空格另一个是括号,这时候的“()”类似于c或者
c++中的语句结束符“;”,很多时候我们还使用它包括多条DOS命令,这时候又有点类似于c
或者c++中的{},起包含语句块的作用!
“%”它的作用是表示变量,而且在批处理文件和在命令行下书写格式不一样,在命令行下
使用%variables,在批处理中我们使用%%variables或者%variables%(不同命令使用不同
格式),对于原因,我想它类似于c或者c++中的“转义”,在编程语言中,为了某些特殊的
需要提出了“转义”的概念,顾名思义就是转变符号的原有意思,比如a是响铃!举个例子来
说明%的意思,在C++中我们要在屏幕上输出一个“”,则应该写做cout<<"";,如果要输出
两个“”则应该写成cout<<"";,这个过程有个很好听的名字“脱逸”,%也遵循了这样方法,在
后面我们将结合for命令详细的说明!
提到“%”号,就不得不说一下参数,所谓参数是在批处理文件(开始说的每个批处理文件
是一个外部命令)后所添加的以空格分隔的字符串,它的使用方法是%1-9,参数是针对批
处理文件做为一个外部命令来说的,虽然参数和变量不是一个概念,但是它是按变量来处理
的,所以有时候我们也就称为变量了!举例说明!
@echo off
md %1
md %1天下1
md %1天下2
md %1天下3
保存为我们在CMD下输入: 天下,执行后会在批处理目录中建立一个名字
为“天下”的文件夹而且在该文件夹下会一次建立三个子文件夹,这当我们输入“ 天
下”的时候“天下”就作为参数传递给了%1,即%1=天下!
另外%variables%的作用是引用环境变量!环境变量可以简单理解为系统已经设置好的系统
变量比如%systemroot$是c:windows,%compsec%代表的是
发布者:admin,转转请注明出处:http://www.yc00.com/news/1713734223a2307907.html
评论列表(0条)