.bat 批处理文件常用命令

后缀为bat的文件为批处理(Batch)文件,是DOS/Window系统下的可执行文件。
可使用文本编辑器对批处理文件进行编辑,一个文件中可存放多条命令行语句,双击即可运行。
本文不对批处理文件命令做系统介绍,仅提供一些基础的使用经验。

输出/打印

采用echo命令进行输出,如

echo Hello World
pause 这条命令让执行过程暂停,否则命令执行完成后窗口自动关闭,无法看清输出内容

每个echo语句输出单行文本,可使用如下方式输出空行:

echo=	echo,	echo;
echo+	echo/	echo[	echo]
echo:	echo.	echo\

输出特殊字符(例如&或>时),需要在字符前加上转义字符^,如

错误示例:echo Tom&Jerry
正确示例:echo Tom^&Jerry 

批处理文件在执行命令时,会将命令语句本身打印出来,称为回显。

echo off 关闭回显,注意这里不再打印命令语句本身,并不会影响echo命令的输出内容
echo on 打开回显 

顺带一提,也可直接在命令语句前加入**@**符号,来关闭单条命令的回显,如

@echo Can you see the command itself?
pause

变量

批处理文件中的变量本身不具有数据类型,可以认为默认情况下同属于字符串类型,只有在特殊操作(例如数值运算)时临时进行类型转换。采用set命令对变量赋值,如

set var_name=var_value

采用双%获取变量的值,如

echo var_name 输出内容为var_name
echo %var_name% 输出内容为var_value 

可采用equ命令进行变量取值的比较,如

@echo off 
set a=Hello
set b=World
if %a% equ %b% (echo a=b) else (echo a!=b)
pause 

批处理也提供了简单的字符串替换操作,如

@echo off
setlocal EnableDelayedExpansion
set str=This is an apple
echo %str% 输出内容为This is an apple
set "str=!str:a=A!"
echo %str% 输出内容为This is An Apple
pause

但是%取值的方式会在编译过程中就把变量的值确定下来,如果变量的值在执行过程中发生了变化,也不会反映在%var_name%当中。为了更灵活地使用变量(具体使用场景可参见循环章节),可采用双!来获取变量的值,这种方式称为“变量延迟扩展”。延迟扩展功能在命令行窗口中默认处于开启状态,也可以使用如下语句手动开启或关闭:

setlocal EnableDelayedExpansion 打开延迟扩展功能
setlocal DisableDelayedExpansion 关闭延迟扩展功能 

循环

我们使用如下命令输出三行Hello:

@echo off
for /l %%i in (1,1,3) do (echo Hello)
pause

需要注意的是,for循环中所采用的变量,名称只能包含一个字符,形如%%ii则不可行。其中(1,1,3)中的三个数字分别代表%%i变量的(起始值,变化值,终止值)。与一般的编程语言习惯不同,这里的终止值也包含在循环当中,所以上文的echo Hello命令执行了三次。下面来看如何结合for循环使用变量延迟扩展,例如

@echo off
setlocal EnableDelayedExpansion
set words1=How
set words2=are
set words3=you
for /l %%i in (1,1,3) do (
    echo !words%%i!
)
pause

输出内容为"How换行are换行you换行"。若此处使用echo %words%%i%……呃,好像无法解析变量,我也不知道

注释

批处理文件中可使用::添加单行注释,多行注释一般采用goto语句添加,如

@echo off
::This is an annotation
goto annotation_end
  Write anything
  you would like
  to write here
:annotation_end
pause

不推荐在for循环内部使用注释,可能会出错。

文件操作

采用for循环遍历某路径下某种类型的文件:

@echo off
for %%f in (*.txt) do (echo %%f)
pause

采用ren命令重命名文件:

ren oldname.txt "this is a new name.txt"

双引号可以处理路径或文件名中包含空格的情况。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值