设置变量: set a=1 变量需要运算则需要用set /a 如: set /a num+=1 让用户输入一行变量:set /p 字符串替换 %var:str1=str2% 字符串截取 %a:~[m[,n]]% %a:~0,n% 取左边n位 setlocal 与 变量延迟 为了能够感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。 例1: 例2: 解说:启动了变量延迟,得到了正确答案。变量延迟的启动语句是“setlocal enabledelayedexpansion”,并且变量要用一对叹号“!!”括起来(注意要用英文的叹号),否则就没有变量延迟的效果。 常用特殊符号 1、@ 命令行回显屏蔽符 1、@ 命令行回显屏蔽符 这个字符在批处理中的意思是关闭当前行的回显。我们从前几课知道 2、% 批处理变量引导符(我理解为函数参数) 这个百分号严格来说是算不上命令的,它只是批处理中的参数而已(多个%一起使用的情况除外,以后还将详细介绍)。 例:最简单的复制文件自身的方法 小技巧:添加行内注释
比如: 4、>> 重定向符 用法同上 同样拿1.txt做例子 使用命令: 这时候1.txt 内容如下: 5、<、>&、<& 重定向符 这三个命令也是管道命令,但它们一般不常用,你只需要知道一下就ok了,当然如果想仔细研究的话,可以自己查一下资料。(本人已查过,网上也查不到相关资料) <,输入重定向命令,从文件中读入命令输入,而不是从键盘中读入。 >&,将一个句柄的输出写入到另一个句柄的输入中。 常用句柄:0、1、2,未定义句柄:3—9 句柄0:标准输入stdin,键盘输入 我们已经知道读取文本中的内容可以用for命令,但如果只需要读取第一行用for命令就有点麻烦。简单的办法如下: 6、| 命令管道符 格式:第一条命令 | 第二条命令 [| 第三条命令...] 例如: dir c:/|find "txt" 以上命令是:查找C:/所有,并发现TXT字符串。 在不使format的自动格式化参数时,我是这样来自动格式化A盘的 echo y|format a: /s /q /v:system 用过format的都知道,再格盘时要输入y来确认是否格盘,这个命令前加上echo y并用|字符来将echo y的结果传给format命令 从而达到自动输入y的目的 (这条命令有危害性,测试时请慎重)
^是对特殊符号<,>,&的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。 比如 echo test ^>1.txt 结果则是:test > 1.txt 他没有追加在1.txt里,呵呵。只是显示了出来 另外,此转义字符还可以用作续行符号。 不用多说,自己试一下就明白了。 为什么转义字符放在行尾可以起到续行符的作用呢?原因很简单,因为每行末尾还有一个看不见的符号,即回车符,转义字符位于行尾时就让回车符失效了,从而起到了续行的作用。
语法:第一条命令 & 第二条命令 [& 第三条命令...] 这个符号允许在一行中使用2个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行。 dir z:/ & dir y:/ & dir c:/ 以上命令会连续显示z,y,c盘的内容,不理会该盘是否存在
9、&& 组合命令 用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令 dir z:/ && dir y:/ && dir c:/
10、|| 组合命令 语法:第一条命令 || 第二条命令 [|| 第三条命令...] 用这种方法可以同时执行多条命令,当一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;
问题:把C盘和D盘的文件和文件夹列出到a.txt文件中。看例: 这样执行后a.txt里只有D盘的信息!为什么?因为组合命令的优先级没有重定向命令的优先级高!所以这句在执行时将本行分成这两部分:dir c:/和dir d:/ > a.txt,而并不是如你想的这两部分:dir c:/ && dir d:/和> a.txt。要使用组合命令&&达到题目的要求,必须得这么写: dir c:/ > a.txt && dir d:/ >> a.txt 这样,依据优先级高低,DOS将把这句话分成以下两部分:dir c:/ > a.txt和dir d:/ >> a.txt。例十八中的几句的差别比较特殊,值得好好研究体会一下。 当然这里还可以利用&命令(自己想一下道理哦): dir c:/ > a.txt & dir d:/ >> a.txt 1、"" 字符串界定符 双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法 cd "program files" 以上三种方法都可以进入program files这个目录
12、, 逗号 逗号相当于空格,在某些情况下“,”可以用来当做空格使 比如
13、; 分号 分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序仍会执行。(有人说不会继续执行,其实测试一下就知道了) 比如: 以上命令相当于 例:dir c:/;d:/;e:/1.txt
就说这些了!各位有什么意见请回贴!有什么疑问请到BAT交流区发贴!下一节改进!
小括号在批处理编程中有特殊的作用,左右括号必须成对使用,括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行。
对于这样的"逻辑或取余操作符",我们需要把他们用双引号引起来,也可以用转义字符^,看例子 set /a var= 1 "&" 1 这样结果就显示出来了,其他逻辑或取余操作符用法 |
DOS批处理高级教程
最新推荐文章于 2024-07-24 17:09:18 发布
DOS批处理高级教程精选总结
2010-03-11 17:58