【Windows批处理】常用的特殊符号

@命令行回显屏蔽符号

这个字符在批处理中的意思是关闭当前行的回显。我们从前几章知道
ECHO OFF可以关闭掉整个批处理命令的回显,但不能关掉ECHO OFF这个命令,现在我们在ECHO OFF这个命令前加个@,就可以达到所有命令均不回显的要求

%批处理变量引导符

引用变量用%var%,调用程序外部参数用%1%9
%0 - %9%*为命令行传递给批处理的参数
%0 批处理文件本身,包括完整的路径和扩展名
%1 第一个参数
%9 第九个参数
%* 从第一个参数开始的所有参数
参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等

例如把自身 test.bat 复制到d盘命名为 test_bak.bat

@echo off
copy %0 d:\test_bak.bat

在这里插入图片描述

> 、>>重定向符

>这个字符的意思是传递并且覆盖,它所起的作用是将运行的结果传递到后面的范围
使用命令:echo hello >1.txt将建立文件1.txt,内容为"hello “(注意行尾有一空格)
使用命令:echo hello>1.txt将建立文件1.txt,内容为"hello”(注意行尾没有空格)

>>这个符号的作用和>有点类似,但他们的区别是>>是传递并在文件的末尾追加,而>是覆盖

@echo off
echo hello > 1.txt
echo world >> 1.txt

在这里插入图片描述

| 命令管道符

将第一条命令的结果作为第二条命令的参数来使用,命令格式格式:第一条命令 | 第二条命令 [| 第三条命令...]

@echo off
dir c:\|find "txt"

在这里插入图片描述
列出当前目录,然后把结果传给 find 命令,并发现TXT字符串

^转义字符

^是对特殊符号<>&的前导字符,在命令中将以上3个符号的特殊功能去掉,仅仅只把它们当成符号而不使用它们的特殊意义
例如

@echo off
echo test ^> 1.txt

在这里插入图片描述
^这个符号还可以用作续行符号

@echo off
echo 端^
午^
快^
乐^

在这里插入图片描述

& 、&& 、||组合命令

&可以把多个命令组合起来当一个命令来执行,当第一个命令执行失败了,也不影响后边的命令执行

例如列出 z 盘 和 c 盘的目录。因为没有 z 盘所以会提示找不到路径,但列出了 c 盘目录

@echo off
dir z:\ & dir c:\

在这里插入图片描述

&&用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令

@echo off
dir z:\ && dir c:\

在这里插入图片描述
||用这种方法可以同时执行多条命令,当一条命令失败后才执行第二条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令。这个很好理解。不举例子了

注意:组合命令和重定向命令一起使用必须注意优先级
管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令

例如:把C盘和D盘的文件和文件夹列出到a.txt文件中,可能你会这样写

dir c:\ && dir d:\ > a.txt

执行结果是:在终端列出了 c 盘目录,而 a.txt 中只列出了 d 盘目录 。原因很简单,就是因为重定向符号>的优先级高于组合符号&&,所以先执行了dir d:\ > a.txt,然后才执行 dir c:\

要想得到正确的结果需要这样写

dir c:\ > a.txt && dir d:\ >> a.txt

“” 字符串界定符

双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法

@echo off
cd c:\"Program Files"

在这里插入图片描述

,逗号

逗号相当于空格,在某些情况下,可以用来当做空格使用,例如以下命令相当于dir c:\

@echo off
dir,c:\

;分号

当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序仍会执行

例如执行dir c:\;d:\;e:\

以上命令相当于
dir c:
dir d:
dir e:\

1、如果其中 e 盘不存在,运行显示
在这里插入图片描述
2、如果 e 盘存在则正常执行
3、如果运行 dir c:\;d:\1.txt,其中 d 盘存在,但1.txt 不存在,则 dir c 正常执行,最后提示

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200629085142405.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAzNTY3Njg=,size_16,color_FFFFFF,t_70 =500x)
所以总结一下:如果目标路径不存在,则终止执行;如果路径存在,仅文件不存在,则继续执行

() 括号

小括号在批处理编程中有特殊的作用,左右括号必须成对使用,括号中可以包括多行命令,这些命令将被看成一个整体,视为一条命令行

括号在for语句和if语句中常见,用来嵌套使用循环或条件语句,其实括号()也可以单独使用

栗子
下面两种写法效果一样,这两种写法都被视为是一条命令行

echo 1 & echo 2 & echo 3
(
echo 1
echo 2
echo 3
)

注意:这种多条命令被视为一条命令行时,如果其中有变量,就涉及到变量延迟的问题

! 感叹号

在变量延迟问题中,用来表示变量,即%var%应该表示为!var!,之前的延迟变量讲过

更多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章