初识批处理文件(bat)

什么是批处理文件

批处理文件首先是一个文本文件,这个文件是由DOS命令或者非DOS命令,也可以是由条件语句(if)和流程控制语句(goto)以及循环语句(for)组成的一种简单的程序[批处理文件的编程能力十分有限,也是十分不规范],文件本身既具有文本的可读性,又具有程序的可执行性的,具有对某对象进行批量的处理能力的程序。
在网上看到很多对批处理介绍基本上都差不多,但是很快就发现Dos命令、CMD命令和Linux Shell命令都可以根据批处理程序运行的平台作为批处理程序一部分。于是个人去纠结什么是批处理、批处理命令和DOS、Window下特殊命令、Linux Shell之间的关系了,很快就醒悟我关注错了方向,那就是开始学习一门新的语言时不要过于去纠结它是什么,当使用的多了实践中自然会出真知。

批处理程序基础知识

DOS基础知识
1、DOS 程序运行完后都有返回码,我们查看程序运行结果。
3、按下 Ctrl+C 组合键可以强行终止批处理运行。
4、批处理认行不认命令数目。
5、“-”和“/”是同样的效果。

DOS查看命令帮助
DOS命令如此之多,一般情况我们记忆一些常用的命令,当出现忘记某个命令时候比百度来的更快的就是查看帮助信息了。DOS 每一条命 令都会有帮助信息,常用到查看命令帮助信息的方法有以下三种:

HELP Instance
help 命令 例:help dir 适用于部分命令
使用 x 查看相关的帮助信息 例:shutdown x 适用于部分命令
使用/?查看相关的帮助信息 例: if /? 适用于部分命令

常见的DOS命令基本上是支持上述三种帮助的其中一种,如果上述三种都不行哪还有万能的度娘和墙外的谷歌嘛!!!

DOS命令格式形式
在 DOS 中,命令使用格式的一般形式
符号表达为:[Path]关键字 [D:][Path]filename(,ext)[pam]
中文表达 为:[路径]关键字[盘符][路径]文件名[扩展名](参数)[参数]
关键字 在命令中,关键字是必不 可少的,但其他项可有可无,根据需要 选定。
盘符和路径 表示驱动器号,即我们电脑 C:盘,D:盘,E:盘等。【在默认的驱动器下可以省略盘符和路径参数】

命令用法的标准语法格式:

下面以 shutdown 关机命令为例详细说明:
标准语法格式:

shutdown [/i | /l | /s | /r | /a | /p | /h | /e] [/f][/m\\ComputerName][/txxx] [/d [p|u:]xx:yy [/c "comment"]]

或者是:

shutdown [-i | -l | -s | -r | -a | -p | -h | -e] [-f] [-m \\ComputerName] [-t XXX] [-d [p:] XX:YY-c"Comment"] 

备注:在批处理里“-”和“/”连个符号是等价的,两种写法系统到能识别。

1、中括号[]里的内容是可选项目,可选可不选。
2、中括号里面的内容用“|”分隔,表示可选择的几个项不可以 同时选定,只可以选择其中一项或者全都不选。
3、尖括号<>用来表明可选参数下的子参数。
4、大括号{}表示其中的项必须选一项。
5、省略号…指可以输入重复的项,知道需要的数目。
7、参数项,每个参数一般由一个斜杠加一个字母组成,对命令 起辅助作用。有的命令可以选用多个参数项。
8、中括号与中括号之间的命令没有次序之分。

特殊字符的输入
有点类似转义字符的意思,在CMD打开 cmd 窗口 输入 edit 打开编辑窗口 ctrl+p (意思是允许输入特殊字符) 按 ctrl+a 将会出现笑脸图案。每次需要输入特殊字符时,都先按 ctrl+p 然后再 ctrl+字母输入。

学习批处理程序

批处理中常用的符号:
  • 符号:*是通配符,代表一切字符;*.* 就是所有类型的文件
  • 符号:<重定向,表示从文件中读取数据;例: set /p data=< a.txt 表示从a.txt中读取一行内容,赋给变量data;
  • 符号:>重定向,表示把原本输出到屏幕上的数据写入其他设备、文件并覆盖文本中原来数据;
  • 符号:>>重定向,表示把原本输出到屏幕上的数据写入其他设备、文件并只是文本中原来数据后追加新的内容。
  • 符号:|管道符,将管道符号前面命令的输出结果重定向输出到管道符号后面的命令中去,作为后面命令的输入。使用格式为:command_1|command_2
  • 符号:^转义符 ,将特殊符号转化为一般符号,即剥离特殊符号的特殊地位。特殊符号指:| & > <
  • 符号:& 逻辑命令符,&:它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败;
  • 符号:&&逻辑命令符,&&-当&&前面的命令成功执行时,执行&&后面的命令,否则不执行;
  • 符号:||逻辑命令符,||-当||前面的命令失败时,执行||后面的命令,否则不执行。
批处理文件的参数:
  • 批处理文件还可以像其他编程语言函数一样使用参数(DOS命令的命令行参数),但是在批处理文件需要用到一个参数表示符%
    %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。
DOS基础命令
DOS cn DOS cn
find 搜索字符串 ren 批量重名 t
dir 查看本目录文件 rd 删除目录
type 查看文件内容命令 attrib 更改文件属性命令
move 剪切命令 format 格式化命令
chkdsk 检查磁盘 path
copy 复制文件命令 xcopy 高级复制命令
title 更改cmd标题命令 color 设置CMD背景
defrag 磁盘碎片整理 ipconfig 查看ip地址命令
CLS 清屏 tree 显示文件文件夹和结构
mstsc 远程桌面连接 ping 计算机名字 网络ping命令
date 显示当前日期 time 显示当前时间 当
taskkill 结束进程 tasklist 查看进程
shutdown 关机命令 sc config 开启服务类型
mode con 显示提示符的长和宽 nslookup 查看dns服务

批处理基本命令[特殊标记符]

echo、@、call、pause、start 、goto、set等最常用的几个命令[或者是特殊标记符]


REM

REM :注释命令[小技巧:用::代替rem],一般用来给程序加上注解,该命令将不会被显示和执行,在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在CONFIG.SYS中也可以用分号 ; 代替REM命令,但在批处理文件中则不能替代)。
语法 :REM [string] 指定要屏蔽的命令或要包含的注解。
例: rem 这是一条注释 rem 关键字表示不会被执行也不会被回显


@

@:并不是一个命令, 而是DOS 批处理的一个特殊标记符, 表示屏蔽命令行本身回显,与echo off功能相似,但它是加在其他命令行的最前面。
语法 :@批处理命令 例:@echo off ; @pause


ECHO

ECHO:是一个回显命令,当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。
在运行批处理程序时,MSBDOS一般在屏幕上显示(回显)批处理程序中的命令。
关闭/打开此功能
语法 :ECHO [ON|OFF] ;例:@ echo off
回显示Messge
语法:echo [message] ;例:echo Hello Word
输出一个空格
语法:echo.
备注:值得注意的是命令行中的“.”要紧跟在echo后面中间不能有空格,否则“.”将被当作提示信息输出到屏幕。
答复命令中的提问
语法:echo [Y/N]|命令文件名
它是通过DOS管道命令把echo命令输出的预置答复语 ,简化一些需要人机对话的命令的操作
例:echo N|chkdsk D: /f
例如检查并修复D分区: 回车就会启动chkdsk磁盘检查工具扫描D分区了。
例:del C:\Users\Administrator\Desktop\test:.
删除桌面test文件夹中所有文件;

将文件内容输出到指定文件中
语法:echo 文件内容>文件名
创建或者覆盖之前内容
语法:echo 文件内容>>文件名  
创建或者追加内容


PAUSE

PAUSE:运行此句会暂停批处理的执行并在屏幕上显示请按任意键继续….的提示,等待用户按任意键后继;只能在批处理程序中使用该命令。
语法 :PAUSE
小技巧:pause>nul命令的使用;
pause>nul : 也是暂停的作用,区别PAUSE的是不回显“请按任意键继续…”提示文字,nul相当于空文件,把这些文字隐去了。**
例 : echo 请按任意键重启设备…& pause>nul
备注:pause>nul是暂停不回显,但是如果写成 pause>null效果就等同于没有pause命令一样,null 相当于把pause命令赋值为空,程序会继续执行;


CALL

CALL:从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用Call,它将不会在命令行起作用。
call命令有两种语法:
语法: call [ [Drive:] [path] fileName [batchBparameters]]
参数 [Drive:}[path] fileName 指定要调用的批处理程序的位置和名称。filename:参数必须具有 .bat、.cmd 或者 .exe 扩展名。
batchBparameters :指定批处理程序所需的命令行信息。
语法:call : [:label [arguments]]:调用本文件内命令段,相当于子程序。被调用的命令段以标签:label开头,以命令goto :eof结尾。
:label:指定批处理程序要跳转到的标签。使用带有该参数的 call 命令可以创建新的批处理文件上下文,并将控制权交给指定标签后的语句。当首次遇到该批处理文件的末尾时(在跳转到标签后),控制权将交还给 CALL 语句后的语句。第二次遇到批处理文件的末尾,批脚本将被退出。对于可允许您从批处理脚本返回的 goto :eof 命令扩展,要了解关于它的说明,请参阅“”。
arguments:对于以 :label 打头的批处理程序,指定要传送给其新实例的命令行信息,包括命令行选项、文件名、批处理参数(从 %1 到 %9)或者变量。
例:

@echo off
echo 请按任意键后使用call命令调用test.bat;
pause>null
call test.bat

执行不路径下的bat文件时就需要加上被调用bat的路径

  • 备注:在和test.bat同一路径下[没有填path默认去同一路径下找]新建一个test_call.bat,并将下面程序复制进去。然后保存双击打开即可;

START

start:启动单独的“命令提示符”窗口来运行指定程序或命令,所有的DOS命令和命令行程序都可以由start命令来调用。如果在没有参数的情况下使用,start 将打开第二个命令提示符窗口。
START [“title”] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL][/NODE ] [/AFFINITY ] [/WAIT] [/B] [command/program] [parameters]

参数说明:
title:在窗口标题栏中显示的标题。
path: 启动目录。
I :新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。
MIN :以最小化方式启动窗口。
MAX :以最大化方式启动窗口。
SEPARATE :在单独的内存空间中启动 16 位 Windows 程序。
SHARED:在共享内存空间中启动 16 位 Windows 程序。
LOW:在 IDLE 优先级类中启动应用程序。
NORMAL:在 NORMAL 优先级类中启动应用程序。
HIGH :在 HIGH 优先级类中启动应用程序。
REALTIME:在 REALTIME 优先级类中启动应用程序。
ABOVENORMAL: 在 ABOVENORMAL 优先级类中启动应用程序。
BELOWNORMAL :在 BELOWNORMAL 优先级类中启动应用程序。
NODE:将首选非一致性内存结构(NUMA)节点指定为 十进制整数。
AFFINITY:将处理器关联掩码指定为十六进制数字

例:用START命令[在win7系统操作]下打开:记事本、计算器、图形界面打开D盘、浏览器打开指定网页

备注:使用谷歌浏览器批量打开网页

@echo off 
title 批量打开网页
color 0A
cls
rem 谷歌浏览安装在C盘默认路径下
rem 语法:start chrome.exe  {URL1  URL2  URL3  ...}
start chrome.exe https://blog.csdn.net/black_bird_cn  https://www.imooc.com/article/8283 https://www.baidu.com/
echo 开启完成,正在返回!
pause

备注:关闭浏览器

@echo off 
title 关闭浏览器
rem: 关闭IE、谷歌、火狐、360浏览器
taskkill /f /t /im iexplore.exe 
taskkill /f /t /im chrome.exe 
taskkill /f /t /im firefox.exe
taskkill /f /t /im 360se.exe
GOTO

goto :流程控制转向命令,用于控制批处理中命令执行流程
语法:goto label
参数:label 表示批处理文件中的某行,该行表示批处理文件新的执行点;


SET

set:显示、设置或删除 cmd.exe 环境变量。在批处理中,引用该变量就用两个%(百分号)把该变量扩起来,如%var%
设置变量
语法:
SET [variable=[string]]
参数:variable 指定环境变量名,string 指定要指派给变量的一系列字符串。
最简单的一种设置变量的方法;
输入变量值
语法:
SET /P variable=[promptString]
参数:variable 指定环境变量名,promptString 输入要字符串,并指派给变量的一系列字符串,可以为空。
允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的
输入数字表达式赋值给变量
SET /A expression
参数:expression 数字表达式
指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:

猜你喜欢

转载自blog.csdn.net/black_bird_cn/article/details/79912951