初识批处理文件(bat)

什么是批处理文件

批处理文件首先是一个文本文件,这个文件是由DOS命令或者非DOS命令,也可以是由条件语句(if)和流程控制语句(goto)以及循环语句(for)组成的一种简单的程序[批处理文件的编程能力十分有限,也是十分不规范],文件本身既具有文本的可读性,又具有程序的可执行性的,具有对某对象进行批量的处理能力的程序。建议初学者过于去纠结概念等问题,编程中硬道理还是实践出真知。

批处理程序基础知识

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

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

HELPInstance范围
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、中括号与中括号之间的命令没有次序之分。

编码格式问题:
关于编码问题是刚才在Tomcat中的一个批处理文件中出现的于是记录一下,

  • 百度的结果是在Window中的CMD中编码格式 默认GBK编码,不能识别UTF-8格式;[为证实,咨询一个同事结果告诉bat批处理中没用编码格式的说法【更加迷茫更加糊涂了】]
  • 关于编码格式的问题目前还没有得出结论,权先记下,有时间有机会再验证;
  • 同样来自百度:据说UTF-8编码格式的设置命令: chcp 65001;
  • 再次来自百度:如果在批处理文字中ECHO回显命令后的中文输出变成乱码时,修改文件编码 更改为ANSI编码 即可实现正常的中文回显;

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

学习批处理程序


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

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结尾。
?指定批处理程序要跳转到的标签。使用带有该参数的 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 数字表达式
指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:

附 批处理中常用基础符号和命令

批处理中常用的符号:
  • 符号:*是通配符,代表一切字符;*. 就是所有类型的文件*
  • 符号:<重定向,表示从文件中读取数据;例: set /p data=< a.txt 表示从a.txt中读取一行内容,赋给变量data;
  • 符号:>重定向,表示把原本输出到屏幕上的数据写入其他设备、文件并覆盖文本中原来数据;
  • 符号:>>重定向,表示把原本输出到屏幕上的数据写入其他设备、文件并只是文本中原来数据后追加新的内容。
  • 符号:|管道符,将管道符号前面命令的输出结果重定向输出到管道符号后面的命令中去,作为后面命令的输入。使用格式为:command_1|command_2
  • **符号:^转义符 ,将特殊符号转化为一般符号,即剥离特殊符号的特殊地位。特殊符号指:| & > < **
  • 符号:& 逻辑命令符,&:它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败;
  • 符号:&&逻辑命令符,&&-当&&前面的命令成功执行时,执行&&后面的命令,否则不执行;
  • 符号:||逻辑命令符,||-当||前面的命令失败时,执行||后面的命令,否则不执行。
批处理文件的参数:
  • 批处理文件还可以像其他编程语言函数一样使用参数(DOS命令的命令行参数),但是在批处理文件需要用到一个参数表示符%
    %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。
DOS基础命令
DOScnDOScn
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服务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值