网站推广模式,深圳关键词自动排名,工程 建筑 公司 取名 参考,投标网招标网CMD批处理命令入门#xff08;6#xff09;——特殊字符 本章内容主要学习要点#xff1a;重定向符 、命令管道符 |组合命令 、、||转义字符 ^变量引导符 %界定符 本章内容主要学习要点#xff1a;
、重定向符| 命令… CMD批处理命令入门6——特殊字符 本章内容主要学习要点重定向符 、命令管道符 |组合命令 、、||转义字符 ^变量引导符 %界定符 本章内容主要学习要点
、重定向符| 命令管道符、、|| 组合命令^ 转义字符% 变量引导符 界定符
重定向符 、 重定向符, 意思是传递并且覆盖它所起的作用是将运行的结果传递到后面的范围后边可以是文件,也可以是默认的系统控制台即命令提示符。
例1
echo hello120 1.txt新建立文件 1.txt内容为”hello120” 注意行尾有一空格,文件后有一空行
例2 (echo hello120)1.txt #新建立文件 1.txt内容为”hello120” 注意行尾无空格,但文件后有一空行
1.txt echo hello120 #新建立文件 1.txt内容为”hello120” 注意行尾无空格,但文件后有一空行例3
1.txt nul set /phello120 或 1.txt set /phello120nul
#新建立文件 1.txt内容为”hello120” 注意行尾无空格,且文件后也无空行注意 如果上面的例子中1.txt原来有内容的话在使用了 重定向符命令后将会被新的内容覆盖掉这个一定要注意 重定向符将命令的输出结果追加到其后面的设备中去。这个符号的作用和有点类似但他们是有区别的 是传递并在文件的末尾追加而是覆盖。用法同一样的。
例1
echo hello120 1.txt如果1.txt不存在则新建立文件 1.txt内容为”hello120 ”如果1.txt存在则把内容为”hello120 ”追加到其文末尾。
例2
echo hello 1.txt
echo world1.txt这时候 1.txt内容如下:
hello
world命令管道符 |
表示把在它之前的命令或语句的执行结果作为在它之后的命令或语句的处理对象简而言之就是把它之前的输出作为它之后的输入。
例1
tasklist | find /i qq.exe taskkill /f /im qq.exe将tasklist进程列表用传递符| 传递给 find 命令执行查找QQ的进程。
例2
echo Y|rd /s c:\abc通过管道命令|将echo y 的结果传给rd /s c:\abc 命令从而达到自动输入y 的目的。
注意管道命令 | 的输入方法shift键 \
组合命令 、、||
、、|| 为组合命令顾名思义就是可以把多个命令组合起来当一个命令来执行。
符号允许同时执行多条命令当第一个命令执行失败了也不影响后边的命令执行。这里 两边的命令是顺序执行的从前往后执行。 格式第一条命令 第二条命令 [ 第三条命令...]
例1
dir z:\ dir y:\ dir c:\以上命令会连续显示z,y,c 盘的内容不理会该盘是否存在。
符号允许同时执行多条命令当碰到执行出错的命令后将不再执行后面的命令如果一直没有出错则一直执行完所有命令。 格式第一条命令 第二条命令 [ 第三条命令...]
例2
dir z:\ dir y:\ dir c:\这个命令和上面的类似但区别是前一个命令执行失败时后边的命令就不会再执行了。
||符号允许同时执行多条命令当一条命令执行失败后才执行第二条命令当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令。 格式第一条命令 || 第二条命令 [|| 第三条命令...]
例3
tasklist | find /i qq.exe taskkill /f /im qq.exe || echo 你开了QQ?我不信通过和||两个符号可以认为把上例分成了三个命令 第一个命令:tasklist | find /i qq.exe 第二个命令taskkill /f /im qq.exe 第三个命令echo 你开了QQ?我不信
这里我们分析一下如果找不到QQ进程即第一个命令执行失败则 不会执行第二个命令taskkill命令由于taskkill 命令没有执行视作第二个命令执行失败则 || 将会执行第三个命令echo 命令。 如果找到QQ进程即第一个命令执行成功则 将会执行第二个命令taskkill命令由于第二个命令执行成功|| 将不会执行第三个命令echo 命令。
★管道命令 | | 的输入方法输入两次shift键 \ ★组合命令和重定向命令、管道命令一起使用必须注意优先级。管道命令的优先级高于重定向命令重定向命令的优先级高于组合命令。
思考 把C 盘和 D 盘的文件和文件夹列出到a.txt 文件中。
你可能马上的写出了下面的命令
dir c:\ dir d:\ a.txt这样执行后a.txt 里只有D盘的信息为什么因为组合命令的优先级没有重定向命令的优先级高所以命令在执行时将被分成两部分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
转义字符 ^
一般而言^ 以转义字符的身份出现。
因为在cmd环境中有些字符具备特殊功能如 、表示重定向| 表示管道、、|| 表示语句连接……它们都有特定的功能如果需要把它们作为字符输出的话echo 、echo | ……之类的写法就会出错——cmd 解释器会把它们作为具有特殊功能的字符对待而不会作为普通字符处理这个时候就需要对这些特殊字符做转义处理在每个特殊字符前加上转义字符^。
因此要输出这些特殊字符就需要用 echo ^、echo ^|、echo ^|^|、echo ^^……之类的格式来处理
另外此转义字符还可以用作续行符号。
例1
echo off
echo 这是^
一个^
句子
Pause为什么转义字符放在行尾可以起到续行符的作用呢原因很简单因为每行末尾还有一个看不见的符号即回车符转义字符位于行尾时就让回车符失效了从而起到了续行的作用。
变量引导符 %
①当百分号成对出现并且其间包含非特殊字符时一般做变量引用处理比如%var%、%str%
例1
echo off
set strabc
echo 变量 str 的值是 %str%
pause在屏幕上将显示这样的结果
变量 str 的值是 abc
按任意键继续...②另外百分号作为变量引用还有一种特殊形式那就是对形式参数的引用此时单个百分号后面紧跟09这10个数字如 %0、%1、%2 。。。%0 表示批处理文件本身包括完整的路径和扩展名%1至%9 表示第一个参数至第九个参数
例2
echo off
if defined str goto next
set str
set /p str请把文件拉到本窗口后回车
call %~0 %str%
pause
:next
cls
echo 本批处理文件完整路径为%~0
echo 拖到本窗口的文件完整路径为%~1
goto :eof③出现在 set /a 语句中时表示两数相除取余数也就是所谓的模运算它在命令行窗口和批处理文件中的写法略有差异在命令行窗口中只需要单个的%在批处理文件中需要连续两个百分号写成%%。
例如在命令行窗口中运行 set /a num4%2 则结果将显示0因为4除以2的余数为0 如果保存为批处理文件则此语句将略有改变
例3
echo off
set /a num4%%2
echo 4除以2的余数为 %num%
pause④转义符号如果要显示%本身时需要在前面用%来转义。
例4
echo off
echo 一个百分号%%
echo 两个百分号%%%%
echo 三个百分号%%%%%%
pause界定符
①在表示带有空格或特殊符号的路径时常要用来将路径括起来。
例1
cd /d cd d:\program files\^%*abc因为路径中带有空格和特殊符号所以要用将路径括起来。
②表示其中的内容是一个完整的字符串。
例2
echo off
set varabc 123
echo %var%
pause这里表示变量var的值为字符串“abc 123”。