type
status
date
slug
summary
tags
category
icon
password
批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。
在编写bat脚本,只需新建个txt文本文件,然后将后缀名改成bat,然后打开写入你想要实现功能的命令即可。(如果脚本中有中文,需要将编码方式更改成ANSI编码方式,不然运行中文会乱码显示)。对于将批处理脚本编译成exe文件,可以使用QuickBFC编译工具。
学习之前先看一个批处理版的Hello world!是如何实现的,让初学者有个大概的了解。
将上面三行代码放在txt文件里保存,然后将后缀名更改成bat,再双击运行就可以看到你想要的结果了。会显示:
1、title 设置cmd窗口标题
格式:
title 标题名
当cmd窗口较多而某个窗口需要连续调动的时候,你就可以个给对应的bat脚本添加个标题,如下图所示。
2、rem 和 :: 注释
两者存在略微差异,在此没必要细分。一般推荐用rem来进行注释。
3、@ 关闭当前命令行回显
一般批处理里每一命令行被执行,在cmd窗口都会将命令行打印出来。在命令行开头加上@就不会显示在cmd窗口,只显示执行出现的结果。可以看下文章开头Hello world的例子。
4、echo 回显、显示命令
语法:
echo [off|on] 关闭/打开回显功能 (一般为@echo off 关闭回显,此命令也不回显,一般作为批处理首行)
echo [message] 显示信息
echo 查看回显状态
echo. 显示一个空行
echo 文件内容>文件名 将文件内容覆盖进文件中
echo 文件内容>>文件名 将文件内容追加进文件中
5、pause 程序暂停命令
输出:请按任意键继续. . .
一般批处理运行完之后,cmd窗口就会自动闪退关闭,有可能执行不成功你也不知道。此时在程序最后面加一个pause,程序就会在此停止。有时候你会看到pause >null。这个的意思也是暂停,但是不显示输出。为嘛呢? >是重定向符,一般dos命令输出的结果显示在控制台,但通过>可以将显示的内容重新定向。如
dir > list.txt
。null为空,>null为重定向到空,即为不现实命令执行的结果,不过是对是错。如果要显示其他提示语:echo 其他提示语 & pause > null
6、errorlevel 程序返回码
每行命令下执行完之后都会有一个返回码。默认为0,命令执行错会返回1。
7、cd 切换工作目录
语法:cd [盘符][路径] 同盘符切换
cd /d [盘符][路径] 不同盘符切换
cd. 当前目录
cd.. 上级目录
cd\ 到根目录
echo %cd% 显示完整目录
8、ls 查看目录文件列表
9、del 删除
10、type 显示文本文件内容
相当于Linux中cat命令,例如type E:\helloworld.txt,如下图示
11、find 在文件中搜索字符串
12、timeout 延迟命令
如果你的工作中常用到批处理脚本,对ping -n 10 127.0.0.1 1>NUL 应该不陌生,它也可以作为简单的延迟命令。该命令会向本地主机发送10个ICPM回显请求,每个请求之间会有一定的延迟。通过将输出重定向到NUL设备,可以避免在命令行中看到输出。 127.0.0.1是本地回环地址,也称为localhost。它是一个特殊的IP地址,用于将网络数据包发送到本地计算机上的网络连接。
在DOS命令中数字0表示标准输入,数字1表示标准输出,数字2表示标准错误输出。
%,表示参数列表,比如:var_arg.bat arg1 arg2 arg3,则 % = arg1 arg2 arg3
%0,表示脚本文件名,调用时var_arg则%0=var_arg,若调用时var_arg.bat则%0=var_arg.bat
%1,表示第一个参数
%~1,第一个参数去引号,如:var_arg.bat “arg1”,%~1得到arg1
%~f0,脚本文件完整路径名
%~dp0,脚本文件所在目录