批处理命令基础(一)

189 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情 >>

批处理脚本(一)(BAT)

前言

曾经做的Java相关技术栈,在linux上都是写一些shell脚本,现在新工作使用C#开发,使用win一套。发现.bat文件和shell写法还是有点区别的,就自学一下bat语法等。这篇文章偏向于基础,主要是语法用法等。

什么是批处理文件?

我们在win中使用CMD命令进行输入命令行执行命令,当我们把一批命令写入某个文件,以.bat/.cmd结尾时这就是一个批处理文件。双击文件/CMD打开可以将命令按照文件内顺序执行一遍。

常用的批处理文件命令

1.help命令

  • 含义:此命令可以查看某命令的使用方法
  • 语法:命令 /?
  • ex: goto /?

效果:

image.png

2.Echo命令

  • 语法 echo [{on|off}] [message]
  • ex:echo hello world
  • 实际使用我们会用重定向符号将文本输入一个特定的文件中
  • ex:echo off Helloword > c:\out.txt
  • 有点像我之前使用linux将日志重定向输出成txt文件

image.png

3. @命令

  • 含义:表示显示后面的命令
  • 使用:@ echo off(常用此句开头,不显示所有命令包含此命令)
  • ex:
@ echo off
echo Helloword > c:\out.txt

效果:

image.png

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 - 大于或等于