dos批处理清理命令(Dos命令进阶三)(1)

批处理脚本讲解思路


一. 批处理介绍
1、批处理的概述:

批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:

(1)每一行可视为一个命令,

(2)每个命令里可以含多条子命令,

(3)从第一行开始执行,直到最后一行结束,它运行的平台是DOS。

批处理有一个很鲜明的特点:

创建批处理文件 第一个实例.bat

dos批处理清理命令(Dos命令进阶三)(2)

重命名


第二步:写代码

右键"第一个实例.bat"文件,选中“编辑”,然后写代码。代码如下:

@echo off

echo 非常感谢所有条友的关注与支持!

echo 感激不已, 惟有认真, 毫无保留的分享.

pause

dos批处理清理命令(Dos命令进阶三)(3)

编辑批处理脚本


第三步:保存后,双击“第一个实例.bat”运行。

dos批处理清理命令(Dos命令进阶三)(4)

执行批处理脚本

简单了解代码意思:

@echo off 这一句是关闭回显(缺省回显是打开的),如果没有这一句的话会显示一些比较碍眼的信息。

echo 非常感谢所有条友的关注与支持!

echo 感激不已, 惟有认真, 毫无保留的分享.

上面两条指令的结果是在屏幕上打印echo后面的内容(如上图例脚本执行的结果)

pause 这个pause,英文是暂停的意思,让脚本执行完上面的命令后等用户确认退出


详细解释:

(1)、echo off 关闭回显(即批处理中的命令语句不会显示)

(2)、echo on 打开回显

dos批处理清理命令(Dos命令进阶三)(5)

编辑中去除关闭回显的指令行

dos批处理清理命令(Dos命令进阶三)(6)

开启回显执行的结果

dos批处理清理命令(Dos命令进阶三)(7)

在CMD中解释一下回显是咋个意思

(3)、符号“@”的意思是不显示它后面的命令语句,只显示命令执行的结果!

dos批处理清理命令(Dos命令进阶三)(8)

把首行命令中的小老鼠符号去掉看看


(4)、echo 用于显示

echo命令的作用有两个,一个时在CMD上显示一行内容,

如:echo 非常感谢所有条友的关注与支持!!

还有一个是显示关闭命令的回显:echo off

我们在echo off命令前加一个“@”符号是为了不让echo off这条命令本身显示出来,可以让批处理达到整体的美观!

如测试以下代码:

@echo off

echo 你好

echo 你好

pause

dos批处理清理命令(Dos命令进阶三)(9)

第二个实例

再次解释一下:pause命令就是暂停的意思,防止批处理执行完毕后直接退出,执行到pause命令时CMD就会显示

“请按任意键继续”这一行!


3、基础知识补充

前面几篇基础知识的链接:

DOS基础命令汇总(一)

DOS基础命令汇总(二,三,四,五)

Dos命令进阶(一)---Net, Netstat

Dos 命令进阶(二)---FTP命令

如果大家对那个DOS命令不明白,可以通过输入“命令”/? 或 执行 "help 命令名"


4、具体实例分析

@echo off

echo 正在清除系统垃圾文件,请稍后。。。

del /s /f /q %systemdrive%\*.tmp >nul 2>nul

del /s /f /q %systemdrive%\*.gid >nul 2>nul

del /s /f /q %systemdrive%\*.chk >nul 2>nul

del /s /f /q %systemdrive%\*.old >nul 2>nul

del /s /f /q "%userprofile%\localsettings\temp\*.*" >nul 2>nul

del /s /f /q"%userprofile%\recent\*.*" >nul 2>nul

del /s /f /q"%userprofile%\cookies\*.*" >nul 2>nul

del /s /f /q "%userprofile%\localsettings\history\*.*" >nul 2>nul

del /s /f /q "%windir%\temp\*.*">nul 2>nul

del /s /f /q"%windir%\prefetch\*.*" >nul 2>nul

echo 垃圾文件清理完毕!

echo. & pause


分析实例代码:

有了前面几篇基础命令的学习, 想必条友已经知道这个 del 命令是怎么个意思了吧, 它就是删除文件的命令.

del /s /f /q %systemdrive%\*.tmp >nul 2>nul 取这一行代码来说明一下

/s 参数是删除当前目录及其子目录下的指定文件

/f 表示删除没商量,强制删除

/q 表示静默执行, 不提示确认信息.

%systemdrive% 这个是系统环境变量, 你在CMD窗口执行 echo %systemdrive% 看是什么结果

dos批处理清理命令(Dos命令进阶三)(10)

echo 查看系统环境变更

>nul 2>nul 这个呢? 它的意思是将命令执行时的信息或者错误, 还是图解一下吧.

dos批处理清理命令(Dos命令进阶三)(11)

>nul 和 2>nul 的功能演示(后面的特殊符号中还会提到)

注:这是一个用来清除系统垃圾文件的批处理程序。命令其实也是很简单的,主要是用到“del”命令和相关的参数来实现, 有关“del”命令的参数大家可以参考“del /?”来得到详细的帮助。

另外还有“%systemdrive%、%userprofile%”。那么它们是什么呢,这些其实是系统变量,也就是系统目录的另一种表示形式而已。我们可以通过输入“echo %userprofile%”来看看它代表的是系统中的那个目录。那么其它的也是一样

*.tmp的意思是,这个*号是一个通配符号,它表示的是所有以 .tmp 为扩展名的文件。不知道大家是否能理解?

有关系统变量和通配符后面还会详细说明


二. 特殊字符详解

1、@

隐藏执行的命令,只显示结果。

例子:

echo 条友们好

@echo 条友们辛苦了

pause

dos批处理清理命令(Dos命令进阶三)(12)

屏蔽回显命令的演示


2、&

命令连接符号,就是将两个命令连续执行,不用分行

例子:

dir c:\ & dir d:\ & dir e:\

dos批处理清理命令(Dos命令进阶三)(13)

多命令同行执行连接符 &


3、&&

连接两个命令,当&&前的命令成功时,才执行&&后的命令

说白点儿就是, &&前面的命令先执行成功才能执行 &&后面的命令, 如果前面命令执行失败, 后面就不执行了.

高一学的逻辑运算知识在这里用上了, 这叫一假则假, 两个条件有一个为假, 整个都为假了, 则就没必要执行下去了, &&前面那条指令失败了, &&后面的指令就不会再执行了.

例子:

dir x:\ && dir d:\

dos批处理清理命令(Dos命令进阶三)(14)

一假则假


4、||

命令连接符号,表示上一条命令执行失败后,才执行||符号后的内容

这个命令跟上一个相反, 如果 || 前的执行成功, 则 || 后面的命令就不执行了. 逻辑上的叫一真则真

例子:

dir x: || dir c:\

dos批处理清理命令(Dos命令进阶三)(15)

|| 前面的失败了才执行 || 后的指令

如果执行: dir c:\ || dir d:\ 呢, 则只执行 dir c:\ , dir d:\ 这条指令就不会执行, 这一条希望条友能亲自尝试一下看.


5、|

管道符号,就是将上一个命令的输出的内容,作为下一个命令的输入内容

管道是一种很形象的说法, 就是将 | 前面的指令执行后的输出结果暂存在内存中, 作为 | 后面指令执行的输入内容.

这个符号 "|" 就好似一条管理, 将前的送到后面去, 发挥你屌炸天的想象力吧, 嘿嘿嘿

例子:

netstat -an | find "135"

为了具体我先分别执行 netstat -an 和 find "135" , 而后的 find "135" 意思是在某文件中查找字符串135, 在哪个文件中呢, 这里没有给, 所以单独执行 find "135" 铁定会执行失败的, 看下图:

dos批处理清理命令(Dos命令进阶三)(16)

单独执行 netstat

dos批处理清理命令(Dos命令进阶三)(17)

find命令, 在某文件中查看指定的字符串

dos批处理清理命令(Dos命令进阶三)(18)

netstat 与 find 通过管道命令配合执行


6、>

重定向符号,将命令的输出结果重定向到其后面的设备中去,后面的设备中的内容被覆盖

例子:

dir c:\ > cdir.txt

dir c:\ > d:\cdir.txt

dos批处理清理命令(Dos命令进阶三)(19)

重定义符号 > 的使用


7、>>

重定向符号,将命令的输出结果重定向到其后面的设备中去,后面的设备中的内容会被增加在后面

该符号的作用与前面那个 > 符号的区别是: 这个 >> 符号的作用是向一个文件中追加内容, 如果该文件不存在则创建, 如果存在, 则在文件已有内容的后面追加要输出的内容.

> 符号的作用是, 新建一个文件, 并向该文件中添加要输出的内容, 如果指定的文件已存在, 则先清空文件内容再添加要输出的内容.

例子:

echo 第一行内容 >> test.txt

echo 第二行内容 >> test.txt

echo 第三行内容 > test.txt

dos批处理清理命令(Dos命令进阶三)(20)

两个重定向符号的对比


8、^

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

dos批处理清理命令(Dos命令进阶三)(21)

转义字符的作用演示


9、% 批处理变量引导符

这个百分号严格来说是算不上命令的,它只是批处理中的参数而已(多个%一起使用的情况除外)。

引用变量用%var%,调用程序外部参数用%1至%9等等

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %* 为命令行传递给批处理的参数

%0 指批处理文件本身,包括完整的路径和扩展名

dos批处理清理命令(Dos命令进阶三)(22)

参数 %0的用处演示

dos批处理清理命令(Dos命令进阶三)(23)

%0 参数在批处理中的演示效果

%1 第一个参数

%9 第九个参数

dos批处理清理命令(Dos命令进阶三)(24)

%1--%9这是9个外部参数, 多于9个时就使用%*

dos批处理清理命令(Dos命令进阶三)(25)

计算几个数字的和并打印

%* 从第一个参数开始的所有参数

dos批处理清理命令(Dos命令进阶三)(26)

匹配所有外部参数%*

参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。

例:最简单的复制文件自身的方法

代码d:\第五个实例.bat:

copy %0

这段代码的意思就是 复制脚本自身到当前目录下. 这里省略一个点, 完整的写是:

copy %0 .

如果条友看了我前面讲的那CD 命令应该知道 . 代表当前目录, .. 代表父级目录, 所以就有 cd .. 就是返回上级目录.

先切换到与脚本文件所在目录不同的目录中,比如C盘下, 再执行:

d:\第五个实例.bat

dos批处理清理命令(Dos命令进阶三)(27)

小技巧:添加行内注释

%注释内容%(可以用作行内注释,不能出现重定向符号和管道符号)

为什么这样呢?此时“注释内容”其实被当作变量,其值是空的,故只起注释作用,不过这种用法容易出现语法错误,一般不用(等于没说)。


10、*

通配符号,表示任意个任意字符

例子:

dir c:\windows\*.log

del /s /q /f c:\windows\*.log 强制删除当前目录及其子目录下所有以 .log 结尾的文件.

dos批处理清理命令(Dos命令进阶三)(28)

通配符 * 号的应用实例


11、?

通配符号,表示任意一个字符

例子:

dir c:\?indows 列出C:\ 目录下所有任意以单个字符开头并以 indows 结尾名称的文件列表

如果 C:\ 下有Aindows , Bindows, HEindows 三个文件夹, 那么 ?indows 匹配 Aindows , Bindows 两个文件, 但HEindows却不匹配, 因为它是以 HE两个字符开头的文件.

dos批处理清理命令(Dos命令进阶三)(29)

通配符 ? 的操作实例


12、.

表示当前目录

例子:

dir .\ , dir . , dir 三条指令是同样的执行结果, 如果是当前目录, 点这个符号可以省略

dos批处理清理命令(Dos命令进阶三)(30)

点符号在CMD中的应用

dos批处理清理命令(Dos命令进阶三)(31)

点符号在CMD中的应用


13、..

表示上一级目录(也称父级目录)

例子:

dir ..\ 查看父级目录下的文件列表

dos批处理清理命令(Dos命令进阶三)(32)

两点表示上一级目录或父级目录


14、" "

界定符号,通常用来引用有空格的目录

例子:

dir "c:\Documents and settings" 这个界定符在WIN7中可以不用, 但在XP系统中还是会要用到的. 当你要切换的目录名中有空格时, 请使用 双引号 括起来, 否则会报错. 建议需要不需要都使用这个界定符, 应该更保险一些.

dos批处理清理命令(Dos命令进阶三)(33)

目录名中带空格须使用双引号进行包括


15、:

标签定位符号,表示后面的内容是一个标签名

例子:

@echo off

:again

echo 诚心感谢条码们对小编的关注与支持!

pause

goto again

dos批处理清理命令(Dos命令进阶三)(34)

标签跳转操作


16、,

某些时候可以当空格来使用

例子:

echo,

dir,c:\ 这个例子的意思太白了, 小编就不演示截图了.


17、;

分号,当命令相同时,可以将不同目标用来隔离

例子:

dir c:\;d:\ 如果你想同时查看 C:\, D:\ 两个目录下的文件列表, 就可以一个DIR 命令, 后跟多个要查看的目录路径, 相互之间以分号隔开就可以了.


18、::

表示后面的语句是注释。相当于c 中的"//"

例子:

@echo off

::显示c盘根目录文件. (注释就是说明性的文字内容, 不作为指令执行)

dir c:\*.txt

pause

dos批处理清理命令(Dos命令进阶三)(35)

注释符的使用


19. < 输入重定向

将要执行的代码存在一个文本test.txt 中:

d:

cd D:\我的头条20171127

dir

pause

执行命令:

cmd.exe < test.txt

dos批处理清理命令(Dos命令进阶三)(36)

输入重定向符号的使用


20. 逻辑运算符

EQU(Equ-al) - 等于

NEQ(N-OT Equ-al) - 不等于

LSS(LESS) - 小于

LEQ(L-ESS Equ-al)- 小于或等于

GTR(GREATER) - 大于

GEQ(G-REATER Equ-al) - 大于或等于

例如下面这段代码:

dir aaaa

if %ERRORLEVEL% EQU 0 (echo success) else (echo fail) [如果等于0说明执行成功, 否则执行失败]

先执行 dir aaaa 这个命令, 下面 if 命令语句(后面会细讲)是用来判断上一条命令是否执行成功, 如果成功就打印 success, 否则打印 fail.

dos批处理清理命令(Dos命令进阶三)(37)

逻辑运算符的使用


综合实例:

@echo off

ping /n www.qq.com || shutdown /r /t 180 /c 命令执行失败了,180秒后重启! && exit

%0

这条批处理文件主要是用ping命令来判断网络的连通性,当我们的ping命令执行成功后就不会执行它后面的内容。那假如没有ping通的话就执行它后面的相关命令了。

%0它表示的就是无限循环的执行我们的批处理程序。

注意: 如果不小心进入倒计时关机状态, 请执行 shutdown -a 指令来取消哦.

dos批处理清理命令(Dos命令进阶三)(38)

开启执行实例

dos批处理清理命令(Dos命令进阶三)(39)

我关闭了执行窗口或CTRL C, 然后就...

dos批处理清理命令(Dos命令进阶三)(40)

取消关机状态


来看一下shutdown命令的帮助

dos批处理清理命令(Dos命令进阶三)(41)

shutdown /? 帮助文档查看

dos批处理清理命令(Dos命令进阶三)(42)

如何判断一条指令是否执行成功


根据我自己编写的脑图结构, 这才说了1/3的内容, 篇幅感觉有点儿过长了, 怕些许条友们都没有耐心读下去了. 先到这里吧, 小编发誓绝不是为了揍文章篇数的, 俺向来知无不言, 言无不尽, 诚心满满, 还请条友们明察!


,