ECHO 和 @
打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置
echo
echo on
echo 第一个批处理
echo off
echo 第一个批处理
加@代表不显示当前行命令自身,我们习惯上不显示回显,所以通常情况下这样写
@echo off
echo 第一个批处理
REM 和 ::
rem
是 注释命令,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。会回显,受 echo on 和 echo off 控制
::
也是注释,但不会回显。不建议使用
所以如果我们把回显打开
@echo on
rem 这是一条注释
:: 这也是一条注释
echo Hello World
PAUSE
暂停命令。运行 Pause 命令时,将显示下面的消息:Press any key to continue. . .(或:请按任意键继续. . .)
@echo off
echo 端午
pause
echo 快乐
@echo off
echo 端午
echo 快乐 & pause > nul
echo 在家
pause
echo 待著吧
可以注意到 echo 快乐 & pause > nul
时没有输出。因为已经把结果输出重定向一个空设备,让命令处理结果不显示了2
TITLE、COLOR、MODE
title
cmd窗口显示的标题
color
cmd控制台显示的颜色,前一位数字表示背景色,后一个字母则为前景。每个数字可以为以下任何值之一
0 = 黑色 | 1 = 蓝色 | 2 = 绿色 | 3 = 湖蓝色 |
4 = 红色 | 5 = 紫色 | 6 = 黄色 | 7 = 白色 |
8 = 灰色 | 9 = 淡蓝色 | A = 淡绿色 | B = 淡浅绿色 |
C = 淡红色 | D = 淡紫色 | E = 淡黄色 | F = 亮白色 |
mode
设置命令行窗口大小,cols是列,lines是行
@echo off
title 今日份批处理
mode con cols=40 lines=10 & color f2
echo Hello World
goto和:
在批处理中允许以":XXX"来构建一个标号,然后用GOTO XXX跳转到标号:XXX处,然后执行标号后的命令
@echo off
:start
set /a var+=1
echo %var%
if %var% leq 3 goto start
pause
find 和 type
find
:从文件中收索字符串
type
:查看文件内容
@echo off
echo 111aaa > test.txt
echo 222bbb >> test.txt
find "111" test.txt
del test.txt
pause
echo 111 > test.txt
echo 222 >> test.txt
type test.txt | find "111"
del test.txt
pause
start
启动单独的"命令提示符"窗口来运行指定程序或命令。如果在没有参数的情况下使用,start 将打开第二个命令提示符窗口
@echo off
start explorer d:\
echo hello
运行程序发现直接调用资源管理器显示 d 盘内容,同时后边的 hello 也输出了,说明原来程序并没有关闭
assoc 和 ftype
不同类型的文件,需要不同的文件查看器。例如xlsx表格需要使用Office Excel或WPS,PDF文件需要使用Adobe reader或福昕阅读器等等。assoc
的作用就是显示或修改文件扩展名关联
直接执行 assoc
显示所有’文件扩展名’关联,部分执行结果
assoc
显示.txt代表的文件类型,结果显示 .txt=txtfile;显示 .doc 代表的文件类型,结果显示 Word.Document.8
@echo off
assoc .txt
ftype
:显示文件类型关联
如果直接执行 ftype
,部分执行结果
ftype exefile
pushd、popd 和 CALL
这两个命令的作用都是 切换当前目录
@echo off
c: & cd\ & md mp3
md d:\mp4
cd /d d:\mp4
pushd c:\mp3
popd
执行这条命令后在 c 盘根目录创建一个 mp3 文件夹,同时进入到了 c 盘根目录。cd\
是进入根目录,md
命令可以创建文件
在 D 盘创建一个 mp4 文件夹
进入到 d:\mp4 文件夹中,使用 /D 命令行开关,除了改变驱动bai器的du当前目录zhi之外,还可改变当前驱动器
保存当前目录,也就是 d:\mp4,然后进入 c:\mp3
恢复上次保存的目录,也就是 d:\mp4
CALL
命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理。调用本文件内命令段,相当于子程序。被调用的命令段以标签 :label 开头
以命令 goto :eof 结尾。结合 pushd 和 popd 看一个栗子
@echo off
Echo 产生一个临时文件 > tmp.txt
Rem 下行先保存当前目录,再将c:\windows设为当前目录
pushd c:\windows
Call :sub tmp.txt
Rem 下行恢复前次的当前目录
Popd
Call :sub tmp.txt
pause
Del tmp.txt
exit
:sub
Echo 删除引号: %~1
Echo 扩充到路径: %~f1
Echo 扩充到一个驱动器号: %~d1
Echo 扩充到一个路径: %~p1
Echo 扩充到一个文件名: %~n1
Echo 扩充到一个文件扩展名: %~x1
Echo 扩充的路径指含有短名: %~s1
Echo 扩充到文件属性: %~a1
Echo 扩充到文件的日期/时间: %~t1
Echo 扩充到文件的大小: %~z1
Echo 扩展到驱动器号和路径:%~dp1
Echo 扩展到文件名和扩展名:%~nx1
Echo 扩展到类似 DIR 的输出行:%~ftza1
Echo.
Goto :eof
if
1、结合errorlevel使用
@echo off
dir d:
rem 退出代码>=1,就跳到1;>=0跳至0
if errorlevel 1 goto 1
if errorlevel 0 goto 0
:0
echo 命令执行成功
goto exit
:1
echo 命令执行失败
goto exit
:exit
pause
if errorlevel 值 cmmand
句式,它的含义是:如果返回的错误码值大于或等于值 的时候,将执行cmmand
执行成功时
第二行代码改为一个不存在盘符时, dir e:,会执行失败
2、判断字符串相等
@echo off
if "cat"=="cat" (echo yes) else echo No
这里是区分大小写的。除了使用引号,也可以使用中括号[ ]
和大括号{ }
包裹字符串
3、判断文件存在与否
@echo off
if exist a.txt echo 文件存在
@echo off
if not exist a.txt echo 文件不存在