批处理脚本讲解思路
一. 批处理先容1、批处理的概述:批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:
(1)每一行可视为一个命令,

(2)每个命令里可以含多条子命令,
(3)从第一行开始实行,直到末了一行结束,它运行的平台是DOS。
批处理有一个很光鲜的特点:
利用方便、灵巧,功能强大,自动化程度高。
批处理文件的扩展名是BAT或者CMD,把任何一批命令放在有该扩展名的文件里,实行的时候都会按顺序逐条的实行, 在往后学习内容中, 还可以在个中加入一些逻辑判断的语句,即让里面的命令在知足一定条件时实行指定的命令。
2、举例解释:第一步:建立批处理文件
新建一个文本文档,将名字改为 第一个实例.bat
创建批处理文件 第一个实例.bat
重命名
第二步:写代码
右键\"大众第一个实例.bat\"大众文件,选中“编辑”,然后写代码。代码如下:
@echo off
echo 非常感谢所有条友的关注与支持!
echo 感激不已, 惟有负责, 毫无保留的分享.
pause
编辑批处理脚本
第三步:保存后,双击“第一个实例.bat”运行。
实行批处理脚本
大略理解代码意思:
@echo off 这一句是关闭回显(缺省回显是打开的),如果没有这一句的话会显示一些比较碍眼的信息。
echo 非常感谢所有条友的关注与支持!
echo 感激不已, 惟有负责, 毫无保留的分享.
上面两条指令的结果是在屏幕上打印echo后面的内容(如上图例脚本实行的结果)
pause 这个pause,英文是停息的意思,让脚本实行完上面的命令后等用户确认退出
详细阐明:
(1)、echo off 关闭回显(即批处理中的命令语句不会显示)
(2)、echo on 打开回显
编辑中去除关闭回显的指令行
开启回显实行的结果
在CMD中阐明一下回显是咋个意思
(3)、符号“@”的意思是不显示它后面的命令语句,只显示命令实行的结果!
把首行命令中的小老鼠符号去掉看看
(4)、echo 用于显示
echo命令的浸染有两个,一个时在CMD上显示一行内容,
如:echo 非常感谢所有条友的关注与支持!!
还有一个是显示关闭命令的回显:echo off
我们在echo off命令前加一个“@”符号是为了不让echo off这条命令本身显示出来,可以让批处理达到整体的都雅!
如测试以下代码:
@echo off
echo 你好
echo 你好
pause
第二个实例
再次阐明一下: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% 看是什么结果
echo 查看系统环境变更
>nul 2>nul 这个呢? 它的意思是将命令实行时的信息或者缺点, 还是图解一下吧.
>nul 和 2>nul 的功能演示(后面的分外符号中还会提到)
注:这是一个用来打消系统垃圾文件的批处理程序。命令实在也是很大略的,紧张是用到“del”命令和干系的参数来实现, 有关“del”命令的参数大家可以参考“del /?”来得到详细的帮助。
其余还有“%systemdrive%、%userprofile%”。那么它们是什么呢,这些实在是系统变量,也便是系统目录的另一种表示形式而已。我们可以通过输入“echo %userprofile%”来看看它代表的是系统中的那个目录。那么其它的也是一样
.tmp的意思是,这个号是一个通配符号,它表示的是所有以 .tmp 为扩展名的文件。不知道大家是否能理解?
有关系统变量和通配符后面还会详细解释
二. 分外字符详解1、@
隐蔽实行的命令,只显示结果。
例子:
echo 条友们好
@echo 条友们辛劳了
pause
屏蔽回显命令的演示
2、&
命令连接符号,便是将两个命令连续实行,不用分行
例子:
dir c:\ & dir d:\ & dir e:\
多命令同行实行连接符 &
3、&&
连接两个命令,当&&前的命令成功时,才实行&&后的命令
说白点儿便是, &&前面的命令先实行成功才能实行 &&后面的命令, 如果前面命令实行失落败, 后面就不实行了.
高一学的逻辑运算知识在这里用上了, 这叫一假则假, 两个条件有一个为假, 全体都为假了, 则就没必要实行下去了, &&前面那条指令失落败了, &&后面的指令就不会再实行了.
例子:
dir x:\ && dir d:\
一假则假
4、||
命令连接符号,表示上一条命令实行失落败后,才实行||符号后的内容
这个命令跟上一个相反, 如果 || 前的实行成功, 则 || 后面的命令就不实行了. 逻辑上的叫一真则真
例子:
dir x: || dir c:\
|| 前面的失落败了才实行 || 后的指令
如果实行: dir c:\ || dir d:\ 呢, 则只实行 dir c:\ , dir d:\ 这条指令就不会实行, 这一条希望条友能亲自考试测验一下看.
5、|
管道符号,便是将上一个命令的输出的内容,作为下一个命令的输入内容
管道是一种很形象的说法, 便是将 | 前面的指令实行后的输出结果暂存在内存中, 作为 | 后面指令实行的输入内容.
这个符号 \"大众|\"大众 就好似一条管理, 将前的送到后面去, 发挥你屌炸天的想象力吧, 嘿嘿嘿
例子:
netstat -an | find \"大众135\"大众
为了详细我先分别实行 netstat -an 和 find \"大众135\公众 , 而后的 find \公众135\公众 意思是在某文件中查找字符串135, 在哪个文件中呢, 这里没有给, 以是单独实行 find \"大众135\"大众 铁定会实行失落败的, 看下图:
单独实行 netstat
find命令, 在某文件中查看指定的字符串
netstat 与 find 通过管道命令合营实行
6、>
重定向符号,将命令的输出结果重定向到其后面的设备中去,后面的设备中的内容被覆盖
例子:
dir c:\ > cdir.txt
dir c:\ > d:\cdir.txt
重定义符号 > 的利用
7、>>
重定向符号,将命令的输出结果重定向到其后面的设备中去,后面的设备中的内容会被增加在后面
该符号的浸染与前面那个 > 符号的差异是: 这个 >> 符号的浸染是向一个文件中追加内容, 如果该文件不存在则创建, 如果存在, 则在文件已有内容的后面追加要输出的内容.
而 > 符号的浸染是, 新建一个文件, 并向该文件中添加要输出的内容, 如果指定的文件已存在, 则先清空文件内容再添加要输出的内容.
例子:
echo 第一行内容 >> test.txt
echo 第二行内容 >> test.txt
echo 第三行内容 > test.txt
两个重定向符号的比拟
8、^
转义字符, ^是对分外符号<,>,&的前导字符,在命令中他将以上3个符号的分外功能去掉,仅仅只把他们当成符号而不该用他们的分外意义。
转义字符的浸染演示
9、% 批处理变量勾引符
这个百分号严格来说是算不上命令的,它只是批处理中的参数而已(多个%一起利用的情形除外)。
引用变量用%var%,调用程序外部参数用%1至%9等等
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 % 为命令行通报给批处理的参数
%0 指批处理文件本身,包括完全的路径和扩展名
参数 %0的用途演示
%0 参数在批处理中的演示效果
%1 第一个参数
%9 第九个参数
%1--%9这是9个外部参数, 多于9个时就利用%
打算几个数字的和并打印
% 从第一个参数开始的所有参数
匹配所有外部参数%
参数%0具有分外的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。
例:最大略的复制文件自身的方法
代码d:\第五个实例.bat:
copy %0
这段代码的意思便是 复制脚本自身到当前目录下. 这里省略一个点, 完全的写是:
copy %0 .
如果条友看了我前面讲的那CD 命令该当知道 . 代表当前目录, .. 代表父级目录, 以是就有 cd .. 便是返回上级目录.
先切换到与脚本文件所在目录不同的目录中,比如C盘下, 再实行:
d:\第五个实例.bat
小技巧:添加行内注释
%注释内容%(可以用作行内注释,不能涌现重定向符号和管道符号)
为什么这样呢?此时“注释内容”实在被当作变量,其值是空的,故只起注释浸染,不过这种用法随意马虎涌现语法缺点,一样平常不用(即是没说)。
10、
通配符号,表示任意个任意字符
例子:
dir c:\windows\.log
del /s /q /f c:\windows\.log 逼迫删除当前目录及其子目录下所有以 .log 结尾的文件.
通配符 号的运用实例
11、?
通配符号,表示任意一个字符
例子:
dir c:\?indows 列出C:\ 目录下所有任意以单个字符开头并以 indows 结尾名称的文件列表
如果 C:\ 下有Aindows , Bindows, HEindows 三个文件夹, 那么 ?indows 匹配 Aindows , Bindows 两个文件, 但HEindows却不匹配, 由于它因此 HE两个字符开头的文件.
通配符 ? 的操作实例
12、.
表示当前目录
例子:
dir .\ , dir . , dir 三条指令是同样的实行结果, 如果是当前目录, 点这个符号可以省略
点符号在CMD中的运用
点符号在CMD中的运用
13、..
表示上一级目录(也称父级目录)
例子:
dir ..\ 查看父级目录下的文件列表
两点表示上一级目录或父级目录
14、\公众 \"大众
界定符号,常日用来引用有空格的目录
例子:
dir \公众c:\Documents and settings\公众 这个界定符在WIN7中可以不用, 但在XP系统中还是会要用到的. 当你要切换的目录名中有空格时, 请利用 双引号 括起来, 否则会报错. 建议须要不须要都利用这个界定符, 该当更保险一些.
目录名中带空格须利用双引号进行包括
15、:
标签定位符号,表示后面的内容是一个标署名
例子:
@echo off
:again
echo 恳切感谢条码们对
pause
goto again
标签跳转操作
16、,
某些时候可以当空格来利用
例子:
echo,
dir,c:\ 这个例子的意思太白了,
17、;
分号,当命令相同时,可以将不同目标用来隔离
例子:
dir c:\;d:\ 如果你想同时查看 C:\, D:\ 两个目录下的文件列表, 就可以一个DIR 命令, 后跟多个要查看的目录路径, 相互之间以分号隔开就可以了.
18、::
表示后面的语句是注释。相称于c++中的\公众//\公众
例子:
@echo off
::显示c盘根目录文件. (注释便是解释性的笔墨内容, 不作为指令实行)
dir c:\.txt
pause
注释符的利用
19. < 输入重定向
将要实行的代码存在一个文本test.txt 中:
d:
cd D:\我的头条20171127
dir
pause
实行命令:
cmd.exe < test.txt
输入重定向符号的利用
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.
逻辑运算符的利用
综合实例:
@echo off
ping /n www.qq.com || shutdown /r /t 180 /c 命令实行失落败了,180秒后重启! && exit
%0
这条批处理文件紧张是用ping命令来判断网络的连通性,当我们的ping命令实行成功后就不会实行它后面的内容。那如果没有ping通的话就实行它后面的干系命令了。
%0它表示的便是无限循环的实行我们的批处理程序。
把稳: 如果欠妥心进入倒计时关机状态, 请实行 shutdown -a 指令来取消哦.
开启实行实例
我关闭了实行窗口或CTRL+C, 然后就...
取消关机状态
来看一下shutdown命令的帮助
shutdown /? 帮助文档查看
如何判断一条指令是否实行成功
根据我自己编写的脑图构造, 这才说了1/3的内容, 篇幅觉得有点儿过长了, 怕些许条友们都没有耐心读下去了. 先到这里吧, 小编起誓绝不是为了揍文章篇数的, 俺向来畅所欲言, 言无不尽, 恳切满满, 还请条友们明察!