基础
- cmd
打开命令行窗口 - echo,作用是bat执行完毕后,窗口不关闭
echo on //允许在执行过程中显示执行命令代码
echo off //禁止在执行过程中显示执行命令代码
type a.txt //显示已有文件a.txt中的内容
echo m < a.txt //将m的内容写入a.txt中,<表示清空另写入
echo m << a.txt //将m的内容写入a.txt中,<表示追加再写入
echo . //表示换行
@echo off //批处理中,默认以该格式开头
- @
设置在执行过程中禁止显示执行命令代码,@放置在任何命令前,该命令无论是否被设置为echo on,都会被@设置为在执行过程中禁止显示执行命令代码
echo on
@type a.txt //该命令并不会被显示在cmd.exe中
- pause
暂停并提示请按任意键输入…
@echo off
echo pause //pause命令测试
pause //此处将会提示按任意键输入
type a.txt
- rem
表示注释,相当于C++中的//,python中的#,该命令不会被cmd.exe显示
@echo off
rem 这是一个简单的批处理文件
type a.txt
- 中文
chcp 65001 //此命令可以让bat显示中文,最好写在前面
- call命令
调用.bat文件、程序跳转 - set
设置变量,set设置的变量在调用时要在其前后分别加上%set /p
的作用是在用户输入前加一段说明性的描述,即想让用户输入什么内容之类的说明set /a expression
即可以用各种表达式为变量赋值set des=%src:str1=str2%
即把源变量src的值中所有的str1字符串替换成str2字符串,从而组合形成目标变量des的值set des=%src:~m,n%
即把源变量src的值字符串从第m个索引位开始取n位组成目标变量des的值set des=%src:~m%
即把源变量src的值字符串从第m个索引位开始,取后面所有组成目标变量des的值set des=%sec:~-m%
即把源变量src的值字符串从尾部开始取m个字符组成目标变量des的值set des=%src:~m,-n%
即把源变量src的值字符串从m索引位开始,至尾部数第n个索引位为止取出组成目标变量des的值
@echo off
set x=1
echo %x%
set //显示系统的所有环节变量
::set //不显示系统的所有环节变量
set a // 显示所有以a或A开头的环境变量
set a=5 //设置a的值为5
set /a a=1+2
- goto
跳转到指定位置后执行命令,goto的标签名最多8位,超出8位的标签则只读前8位
@echo off
echo 跳过中间的命令,执行最后一条命令
goto last
type a.txt
:last
dir a.txt
- start
在新窗口中运行命令
@echo off
echo 将在新窗口中显示a.txt文件的内容
start "a.txt文件"
echo 已从新命令行窗口返回
- if
与C++中if、else相同作用
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
@echo off
if exist a.txt (echo 找到了a.txt文件,其内容为:type a.txt) else (echo 找不到a.txt文件) //判断a.txt是否存在
if defined a (echo a已经被定义) else echo a没有被定义 //判断a是否被定义
if ERRORLEVEL 1 echo 命令执行失败
if ERRORLEVEL 0 echo 命令成功执行 //用来判断命令是否执行成功
- for
与C++中for循环相同作用
注:/a是将string变成可求值的数值表达式
@echo off
set /a sum=0
for %%x in (*.txt) do (
echo %%x文件的内容如下:
type %%x
echo.
set /a sum+=1
)
echo 一共显示了%sum%个文本文件
- %0
@echo off
rem 1.获取批处理自身的完整路径
echo %0
rem 2.获取批处理自身的完整路径,并去掉首尾的引号
echo %~0
rem 3.获取批处理自身的文件名和后缀名
echo %~nx0
rem 4.获取批处理自身的文件名
echo %~n0
rem 5.获取批处理自身的后缀名
echo %~x0
rem 6.获取批处理自身的完整路径,不含文件名
echo %~dp0
rem 7.获取批处理自身的盘符
echo %~d0
rem 8.获取批处理自身的大小
echo %~z0
rem 9.获取批处理自身的修改时间
echo %~t0
pause