之前有详细介绍Bat批处理脚本中的各个命令,今天汇总一下,简单介绍一下批处理命令、批处理符合和常用DOS命令。

1.批处理命令简介

命令

作用

echo

显示消息,或者启用或关闭命令回显。

rem

在批处理文件或 CONFIG.SYS 里加上注解或说明。

pause

暂停批处理程序,并显示以下消息:请按任意键继续. . .

call

从批处理程序调用另一个批处理程序

start

启动一个单独的窗口以运行指定的程序或命令

goto

将 cmd.exe 定向到批处理程序中带标签的行

set

显示、设置或删除 cmd.exe 环境变量

2.批处理符号简介

符号

作用

@

命令行回显屏蔽符

%

批处理变量引导符

>

重定向符

>>

重定向符

<、>&、<&

重定向符

^

转义字符

&

组合命令

&&

组合命令

“”

字符串界定符

3.常用DOS命令简介

文件夹管理

命令

作用

cd

显示当前目录名或改变当前目录

md

创建目录

rd

删除一个目录

dir

显示目录中的文件和子目录列表

tree

以图形显示驱动器或路径的文件夹结构

path

为可执行文件显示或设置一个搜索路径

xcopy

复制文件和目录树

文件管理

命令

作用

type

显示文本文件的内容

copy

将一份或多份文件复制到另一个位置

del

删除一个或多个文件

move

移动文件并重命名文件和目录

ren

重命名文件

replace

替换文件

attrib

显示或更改文件属性

find

搜索字符串

fc

比较两个文件或两个文件集并显示它们之间的不同

网络命令

命令

作用

ping

进行网络连接测试、名称解析

ftp

文件传输

net

网络命令集及用户管理

telnet

远程登陆

ipconfig

显示、修改TCP/IP设置

msg

给用户发送消息

arp

显示、修改局域网的IP地址-物理地址映射列表

系统管理

命令

作用

at

安排在特定日期和时间运行命令和程序

shutdown

立即或定时关机或重启

tskill

结束进程

taskkill

结束进程

tasklist

显示进程列表

sc

系统服务设置与控制

reg

注册表控制台工具

powercfg

控制系统上的电源设置

4. Bat批处理常用命令汇总

echo 和 @ 回显命令

  • @ 关闭单行回显
  • echo off 从下一行开始关闭回显
  • @echo off 从本行开始关闭回显
  • echo on 从下一行开始打开回显
  • echo 显示当前是 echo off 状态还是 echo on 状态
  • echo. 输出一个”回车换行”,空白行(同echo, echo; echo+ echo [ echo] echo/ echo)

errorlevel

  • echo %errorlevel%
    每个命令运行结束,可以用这个命令行格式查看返回码,默认值为0,一般命令执行出错会设 errorlevel 为1

dir显示文件夹内容

  • dir 显示当前目录中的文件和子目录
  • dir /a 显示当前目录中的文件和子目录,包括隐藏文件和系统文件
  • dir c: /a:d 显示 C 盘当前目录中的目录
  • dir c: /a:-d 显示 C 盘根目录中的文件
  • dir c: /b/p /b只显示文件名,/p分页显示
  • dir *.exe /s 显示当前目录和子目录里所有的.exe文件

cd切换目录

  • cd / 进入根目录
  • cd 显示当前目录
  • cd /d [drive:][path] 可以同时更改盘符和目录

md 创建目录

  • md [drive:]path 在[drive:]盘下创建名为path的目录,如果命令扩展名被停用,则需要键入 mkdir [drive:]path

rd 删除目录

  • rd abc 删除当前目录里的 abc 子目录,要求为空目录
  • rd /s/q d:temp 删除 d:temp 文件夹及其子文件夹和文件,/q安静模式

del 删除文件

  • del d:test.txt 删除D盘下test.txt文件,要删除的文件不能是隐藏、系统、只读文件
  • del /q/a/f d:temp*.* 删除 d:temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
  • del /q/a/f/s d:temp*.* 删除 d:temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
  • del /P 删除每一个文件之前提示确认
  • del /F 强制删除只读文件
  • del /S 删除所有子目录中的指定的文件
  • del /Q 安静模式,删除全局通配符时,不要求确认
  • del /A 根据属性选择要删除的文件,属性包括R 只读文件、S 系统文件、H 隐藏文件、A 准备存档的文件、I 无内容索引文件、L 重新分析点、O 脱机文件、- 表示“否”的前缀

ren 重命名文件

  • ren d:temp tmp 重命名D盘下的temp文件夹为tmp

cls 清屏

  • cls 清除命令窗口上显示的信息

type 显示文件内容

  • type c:boot.ini 显示c盘下boot.ini文件的内容,程序文件一般会显示乱码
  • type *.txt 显示当前目录里所有.txt文件的内容

copy 拷贝文件

  • copy c:1.txt d:2.bak
    复制c盘的1.txt 文件到 d盘,并重命名为 2.bak
  • copy con 1.txt 从屏幕上等待输入,按 Ctrl+C 结束输入,输入内容保存到1.txt文件,con代表屏幕,prn代表打印机,nul代表空设备
  • copy 1.txt + 2.txt 3.txt 合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件,如果不指定 3.txt ,则保存到 1.txt
  • copy test.txt + 复制文件到自己,实际上是修改了文件日期

title 设置cmd窗口的标题

  • title 新标题 修改cmd窗口的标题栏显示为新标题

ver 显示系统版本

label 和 vol设置卷标

  • vol 显示卷标
  • label 显示卷标,同时提示输入新卷标
  • label c:system 设置C盘的卷标为 system

date 和 time 日期和时间

  • date 显示当前日期,并提示输入新日期,按"回车"略过输入
  • date/t 只显示当前日期,不提示输入新日期
  • time 显示当前时间,并提示输入新时间,按"回车"略过输入
  • time/t 只显示当前时间,不提示输入新时间

pause 暂停命令

  • 命令窗口会显示:请按任意键继续…

rem 和 ::注释命令

  • 注释行不执行操作

goto 和 : 跳转命令

  • :label 行首为:表示该行是标签行,标签行不执行操作
  • goto label 跳转到指定的标签那一行

find 查找命令

  • find “abc” d:1.txt 在 d:1.txt 文件里查找含 abc 字符串的行,如果找不到,将设 errorlevel 返回码为1
  • find /i “abc” d:1.txt查找含 abc 的行,忽略大小写
  • find /c “abc” d:1.txt显示含 abc 的行的行数

more 逐屏显示

  • more d:1.txt 逐屏显示 d:1.txt 的文件内容

tree 显示目录结构

  • tree C: 显示C盘的文件目录结构

& :顺序执行多条命令,而不管命令是否执行成功

&& :顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

  • find “ok” d:1.txt && echo 成功
    如果找到了"ok"字符,就显示"成功",找不到就不显示

|| :顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

  • find “ok” d:1.txt || echo 不成功如果找不到"ok"字符,就显示"不成功",找到了就不显示

| 管道命令

  • dir *.* /s/a | find /c “.exe” 管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令,该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数

> 和 >> 输出重定向命令

  • > 清除文件中原有的内容后再写入
  • >> 追加内容到文件末尾,而不会清除原有的内容,主要将本来显示在屏幕上的内容输出到指定文件中,指定文件如果不存在,则自动生成该文件
  • type d:1.txt >prn 屏幕上不显示文件内容,转向输出到打印机
  • echo hello world>con 在屏幕上显示hello world,实际上所有输出都是默认 >con 的
  • copy d:1.txt e: >nul 拷贝文件,并且不显示"文件复制成功"的提示信息,但如果e盘不存在,还是会显示出错信息
  • copy d:1.txt e: >nul 2>nul 不显示”文件复制成功”的提示信息,并且e盘不存在的话,也不显示错误提示信息
  • echo ^^W ^> ^W>d:1.txt 生成的文件内容为 ^W > W ,^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^ 符号

<

  • 从文件中获得输入信息,而不是从屏幕上,一般用于 date time label 等需要等待输入的命令
@echo off
rem 不等待输入直接修改当前日期
echo 2050-05-01>riqi.txt
date <riqi.txt
del riqi.txt

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*
命令行传递给批处理的参数

  • %0 批处理文件本身
  • %1 第一个参数
  • %9 第九个参数
  • %* 从第一个参数开始的所有参数

批参数(%n)的替代已被增强,可以使用以下语法:

  • %~1 - 删除引号(" ), 扩充 %1
  • %~f1 - 将 %1 扩充到一个完全合格的路径名
  • %~d1 - 仅将 %1 扩充到一个驱动器号
  • %~p1 - 仅将 %1 扩充到一个路径
  • %~n1 - 仅将 %1 扩充到一个文件名
  • %~x1 - 仅将 %1 扩充到一个文件扩展名
  • %~s1 - 扩充的路径指含有短名
  • %~a1 - 将 %1 扩充到文件属性
  • %~t1 - 将 %1 扩充到文件的日期/时间
  • %~z1 - 将 %1 扩充到文件的大小
  • %~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串

可以组合修定符来取得多重结果:

  • %~dp1 - 只将 %1 扩展到驱动器号和路径
  • %~nx1 - 只将 %1 扩展到文件名和扩展名
  • %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,并扩展到找到的第一个文件的驱动器号和路径。
  • %~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
  • echo load “%%1” “%%2”>d:1.txt 生成的文件内容为 load “%1” “%2”
    批处理文件里,用这个格式把命令行参数输出到文件

if 判断命令

  • if “%1”==“/a” echo 第一个参数是/a
  • if /i “%1” equ “/a” echo 第一个参数是/a
  • /i 表示不区分大小写,equ 和 == 是一样的

setlocal 和 endlocal设置”命令扩展名”和”延缓环境变量扩充”

  • SETLOCAL ENABLEEXTENSIONS 启用"命令扩展名"
  • SETLOCAL DISABLEEXTENSIONS 停用"命令扩展名"
  • SETLOCAL ENABLEDELAYEDEXPANSION 启用"延缓环境变量扩充"
  • SETLOCAL DISABLEDELAYEDEXPANSION 停用"延缓环境变量扩充"
  • ENDLOCAL 恢复到使用SETLOCAL语句以前的状态
  • “命令扩展名”默认为启用
  • “延缓环境变量扩充”默认为停用
  • 批处理结束系统会自动恢复默认值
  • 所以用到"命令扩展名"的程序,建议在开头和结尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 语句,以确保程序能在其它系统上正确运行
  • "延缓环境变量扩充"主要用于 if 和 for 的符合语句

set 设置变量

  • 引用变量可在变量名前后加 % ,即 %变量名%
  • set 显示目前所有可用的变量,包括系统变量和自定义的变量
  • set p 显示所有以p开头的变量,要是一个也没有就设errorlevel=1

start

  • 批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令

call

  • 批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行
  • 有时有的应用程序用start调用出错的,也可以call调用

xcopy 文件拷贝

  • xcopy d:temp e:temp /s/e/i/y 复制 d:temp 文件夹、所有子文件夹和文件到 e: ,覆盖已有文件
  • 加 /i 表示如果 e: 没有 temp 文件夹就自动新建一个,否则会有询问。