BAT 批处理程序学习

批处理文件编写与使用

BAT 批处理脚本教程

批处理常用命令总结 - 批处理命令简介

批处理(Batch)是一种简化的脚本语言,它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND.COM或者CMD.EXE)解释运行。

批处理文件具有.bat或者.cmd的扩展名 ,这个文件的每一行都是一条DOS命令。

批处理文件也是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。

入门示例

新建bat文件之后,输入内容

  • 打开文本编辑器

    notepad.exe

  • 把屏幕上的内容拷贝进文本文件中

    copy con 1.txt 回车后输入内容,ctrl+z 结束输入

基本语法

查看使用说明: 命令 /?, 如 start /?

  1. echo [{on|off}][message]:用于在屏幕显示文字信息。

    on:允许批处理文件在执行的过程中显示命令。

    off:禁止…。即只执行命令但是不显示在屏幕上面

    echo. echo, echo] echo[ echo; echo: echo/ echo\ echo+ echo= 等都可以实现换行,但echo.最常用

  2. rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。

  3. @[command]:用于屏蔽执行的命令显示在屏幕上。

    屏蔽单条命令

  4. goto label 跳转到指定标号处

    :label来构建一个标号,然后GOTO label 跳转到标号:label 处,执行标号后的命令。

  5. pause:用于暂停。

  6. call [绝对路径] Filename 或者 [:label] 在一个批处理文件中调用另外一个批处理文件

    [绝对路径]Filename:另一个批处理文件。

    [:label] :像goto一样,call也可以跳到某个标签之后执行

  7. start:用于启动一个单独的命令行窗口。

    START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
    [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
    [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
    [command/program] [parameters]
    "title" 在窗口标题栏中显示的标题。
    path 启动目录。
    B 启动应用程序,但不创建新窗口。
    应用程序已忽略 ^C 处理。除非应用程序
    启用 ^C 处理,否则 ^Break 是唯一可以中断
    该应用程序的方式。
    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 将处理器关联掩码指定为十六进制数字。
    进程被限制在这些处理器上运行。
    将 /AFFINITY 和 /NODE 结合使用时,会对关联掩码
    进行不同的解释。指定关联掩码,以便将零位作为起始位置(就如将 NUMA
    节点的处理器掩码向右移位一样)。
    进程被限制在指定关联掩码和 NUMA 节点之间的
    那些通用处理器上运行。
    如果没有通用处理器,则进程被限制在
    指定的 NUMA 节点上运行。
    WAIT 启动应用程序并等待它终止。
    command/program
    如果它是内部 cmd 命令或批文件,则
    该命令处理器是使用 cmd.exe 的 /K 开关运行的。
    这表示运行该命令之后,该窗口
    将仍然存在。
    如果它不是内部 cmd 命令或批文件,则
    它就是一个程序,并将作为一个窗口化应用程序或
    控制台应用程序运行。
    parameters 这些是传递给 command/program 的参数。
    注意: 在 64 位平台上不支持 SEPARATE 和 SHARED 选项。
  8. set [variable=[string]]:定义变量和设置环境。

    variable 指定环境变量名。string 指定要指派给变量的一系列字符串。

    SET 命令不允许变量名含有等号。

    SET 命令中添加了两个新命令行开关:

    • SET /A expression 指定等号右边的字符串为被评估的数字表达式(用 , 分割)。
    • SET /P variable=[promptString] 允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString(提示字符串)。promptString 可以是空的。
  9. 条件语句 if…else…

  10. 循环语句

  11. 子程序

变量

批处理中存在两种类型变量,一类可称为系统变量,即系统已经给这些变量定义了值,我们只需要调用;另一类可称为用户变量自定义变量,即由用户来赋予变量值。

系统变量

举例

  • %APPDATA% 本地 返回默认情况下应用程序存储数据的位置

  • %CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。

  • %COMPUTERNAME% 系统 返回计算机的名称

  • %DATE% 系统 返回当前日期%TIME%

  • %HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。

  • %PATH% 系统 指定可执行文件的搜索路径

  • %PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。

  • %NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。类似的还有%PROCESSOR_ARCHITECTURE%%PROCESSOR_IDENTFIER%%PROCESSOR_LEVEL%%PROCESSOR_REVISION%

  • %SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。 %SYSTEMDRIVE% %WINDIR%

  • %ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。

  • %RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。

  • %USERNAME% 本地 返回当前登录的用户的名称。

    参数变量

    %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*

    %1 %2 %3 %4 %5 %6 %7 %8 %9 表示执行bat时输入的第1个、第2个。。。第9个参数,可以在后面的命令中使用

    :: 若本文件名为test.bat。执行时输入参数:test.bat paramA paramB
    echo %1 %2
    :: 输出第1个变量值:paramA
    echo %1

    %*是一次返回所有参数

    %0 这个不是返回参数的值,其作用有两种:

    • 返回批处理所在绝对路径(echo %0
    • 无限循环执行BAT

用户变量

使用set命令赋值

:: 注意set中的 “=” 两侧不能有空格!
set var=值
echo %var%

如果想让用户手工输入变量的值,而不是在代码里指定,可以用用set命令的/p 参数:

@echo off
set /p var=请输入变量的值
echo %var%
pause

其他

1、:: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符)
2、rem 注释内容 (不能出现重定向符号和管道符号)
3、echo 注释内容 (不能出现重定向符号和管道符号)〉nul
4、if not exist nul 注释内容(不能出现重定向符号和管道符号)
5、:注释内容 (注释文本不能与已有标签重名)
6、%注释内容% (可以用作行间注释,不能出现重定向符号和管道符号)
7、goto 标签 注释内容(可以用作说明goto的条件和执行内容)
8、:标签 注释内容(可以用作标签下方段的执行内容)

文章目录
  1. 1. 批处理文件编写与使用
    1. 1.0.1. 入门示例
    2. 1.0.2. 基本语法
    3. 1.0.3. 变量
      1. 1.0.3.1. 系统变量
        1. 1.0.3.1.1. 参数变量
      2. 1.0.3.2. 用户变量
    4. 1.0.4. 其他
|