[No0000A0]批处理命令学习之:常用的特殊符号
学习要点:
1.>、>>重定向符
2.| 命令管道符
3.&、&&、|| 组合命令
4.^ 转义字符
5.% 变量引导符
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 /p=hello120 或>1.txt set /p=hello120<nul
新建立文件 1.txt,内容为"hello120" (注意:行尾无空格,且文件后也无空行)
注意:如果上面的例子中1.txt原来有内容的话,在使用了> 重定向符命令后,将会被新的内容覆盖掉,这个一定要注意!
—————————————————————————————————–
>> 重定向符 将命令的输出结果追加到其后面的设备中去。这个符号的作用和>有点类似,但他们是有区别的 >>是传递并在文件的末尾追加,而>是覆盖。用法同>一样的。
例1 echo hello120 >>1.txt
如果1.txt不存在,则新建立文件 1.txt,内容为"hello120 ";如果1.txt存在,则把内容为"hello120 "追加到其文末尾。
例2 echo hello> 1.txt
echo world>>1.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 str=abc
echo 变量 str 的值是: %str%
pause
在屏幕上将显示这样的结果:
变量 str 的值是: abc
按任意键继续…
—————————————————————————————————–
②另外,百分号作为变量引用还有一种特殊形式,那就是对形式参数的引用,此时,单个百分号后面紧跟0~9这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 num=4%2 ,则结果将显示0,因为4除以2的余数为0;如果保存为批处理文件,则此语句将略有改变:
例3
@echo off
set /a num=4%%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 "var=abc 123"
echo %var%
pause
这里表示变量var的值为字符串"abc 123"。
[No0000A0]批处理命令学习之:常用的特殊符号的更多相关文章
- Windows批处理命令学习中遇到的坑--持续更新中
再次拾起windows批处理命令,下边将一些遇到的小问题写出来,希望可以帮到大家 1.set命令:set主要的作用是为变量赋值,类似于编程语言中的var i = Value:但是在使用的过程中一定要注 ...
- windows批处理命令学习
初入批处理的学习,发现运行window的系统命令会减少很多的劳动,很方便. 参考例子: http://www.jb51.net/article/41322.htm
- 批处理命令学习笔记——Start命令
Start 命令 启动另一个窗口运行指定的程序或命令,所有的DOS命令和命令行程序都可以由start命令来调用. 语法:START ["title"] [/Dpath] [/I] ...
- Windows脚本\批处理命令学习笔记
1.为新建变量赋值: set 变量=值 2.输出变量的值 echo %变量% 3.关闭批处理中命令行的显示(默认是显示命令行的) 在文件開始处增加:echo off 若需又一次显示:echo on 若 ...
- Linux命令学习
Linux命令学习 Ubuntu常用快捷键 •Ctrl+Alt+T: 打开终端 •Ctrl+Shift+T: 新建标签页 •Tab: 终端中命令补全 •Alt+数字N: 终端中切换到第N个标签页 •↑ ...
- Windows批处理(cmd/bat)常用命令学习
前言 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务.用户只需双击批处理文件便可执行任务,而无需重复输入相同指令.编写批处理文件非常简单,但难点在于确保一切按顺序 ...
- 入门学习Linux常用必会命令实例详解
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...
- Windows常用批处理命令 CMD BAT (CMD目录操作等dir)
Windows常用批处理 CMD BAT CMD获取文件夹下所有文件的名称并打印(输出)到指定目录 dir C:\Users\\Desktop\png\*.*/s >c:\.txt //cmd ...
- Linux常用命令学习6---(vim的使用)
先说说我,我使用了这么久的vim,但是完全没有将vim的功能完全利用到,无非就是使用了编辑(i).保存(:w).退出(:q).等简单的编辑,命令,以及NerdTree这一个插件,所以在这里需要重新学习 ...
随机推荐
- c 线程(平行世界)
我们已经知道如何使用进程来做一些事情了,然而 它并不是在什么地方都是最适合的. 我们看看进程的缺点是什么: 线程隆重登场 1. 如何创建线程 创建线程可以使用多种线程库,在此我们使用最流行的一种:PO ...
- spring aop
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将 ...
- TeamCity : .NET Core 插件
笔者在<TeamCity : 配置 Build 过程>一文中提到 "TeamCity 内置支持几乎所有的 build 类型".在当今这个软件语言和各种框架飞速发展的时代 ...
- java设计模式之简单工厂模式
简单工厂: 简单工厂的优点: 1.去除客户端与具体产品的耦合,在客户端与具体的产品中增加一个工厂类,增加客户端与工厂类的耦合 2.封装工厂类,实现代码平台的复用性,创建对象的过程被封装成工厂类,可以多 ...
- 怎样在Redis通过StackExchange.Redis 存储集合类型List
StackExchange 是由StackOverFlow出品, 是对Redis的.NET封装,被越来越多的.NET开发者使用在项目中. 绝大部分原先使用ServiceStack的开发者逐渐都转了过来 ...
- easyUI属性汇总
CSS类定义: 1.div easyui-window 生成一个window窗口样式. 属性如下: 1)modal:是否生成模态窗口.true[是] false[否] 2)shadow:是否显示窗口阴 ...
- java抽象类和接口
面向对象设计过程中重要的一点是如何进行抽象,即把"问题空间"中的元素与"方案空间"中的元素建立理想的一对一的映射关系.抽象类和接口便是抽象过程中的产物. ...
- Scala Macros - scalamela 1.x,inline-meta annotations
在上期讨论中我们介绍了Scala Macros,它可以说是工具库编程人员不可或缺的编程手段,可以实现编译器在编译源代码时对源代码进行的修改.扩展和替换,如此可以对用户屏蔽工具库复杂的内部细节,使他们可 ...
- Java编程里的类和对象
像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...
- Jquery更改table中的内容(一)
css部分: .tab{ border:solid 1px #00aaee; text-align: left; margin:20px;}.tab tr{ border-top: solid 1px ...