携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情 >>
批处理脚本(一)(BAT)
前言
曾经做的Java相关技术栈,在linux上都是写一些shell脚本,现在新工作使用C#开发,使用win一套。发现.bat文件和shell写法还是有点区别的,就自学一下bat语法等。这篇文章偏向于基础,主要是语法用法等。
什么是批处理文件?
我们在win中使用CMD命令进行输入命令行执行命令,当我们把一批命令写入某个文件,以.bat/.cmd结尾时这就是一个批处理文件。双击文件/CMD打开可以将命令按照文件内顺序执行一遍。
常用的批处理文件命令
1.help命令
- 含义:此命令可以查看某命令的使用方法
- 语法:命令 /?
- ex: goto /?
效果:
2.Echo命令
- 语法 echo [{on|off}] [message]
- ex:echo hello world
- 实际使用我们会用重定向符号将文本输入一个特定的文件中
- ex:echo off Helloword > c:\out.txt
- 有点像我之前使用linux将日志重定向输出成txt文件
3. @命令
- 含义:表示显示后面的命令
- 使用:@ echo off(常用此句开头,不显示所有命令包含此命令)
- ex:
@ echo off
echo Helloword > c:\out.txt
效果:
4.GoTo命令
- 语法:goto label (label是参数,指定所要转向的批处理程序中的行)
- 技巧:label标签的名字可以随便起,但是最好是有意义的,字母前必须加个冒号“:”来表示这个字母是标签。
goto命令就是根据这个冒号来寻找下一步跳到到那里。经常与 if 配合使用,根据不同的条件来执行不同的命令组。
5.REM命令
- 含义:注释命令,不会被执行
- 语法:Rem Message...
- 注释命令前加@才不会显示出来
6.pause命令:
- 含义:会暂停输出,等待用户点击任意键继续输出
- ex: :begin为一个标志点,goto会自动找到这行进行执行
@echo off\
:begin\
copy a:*.* d:\back\
echo Please put a new disk into driver A\
pause\
goto begin
此例子含义 驱动器 A 中磁盘上的所有文件均复制到d:\back中。
显示的信息提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键再次复制
7.call命令
- 含义:代表调用另一个bat、cmd文件
- 语法:call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
- call命令调用完其他文件执行完成后会返回当前文件继续执行
- ex:call="%cd%\test2.bat" haha kkk aaa (调用指定目录下的 test2.bat,且输入3个参数给他)
8.start命令
调用外部程序
9.if命令
判断是否符合条件
-
语法
-
if [not] "参数" == "字符串"
-
if [not] exist [路径]文件名 待执行的命令
-
if [not] errorlevel <数字>
- 如果程序返回值等于指定数字,则条件成立
-
else:若需要换行需要^符号
-
-
比较运算符
EQU - 等于 (一般使用“==”)
NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法)
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于