start
eg1
@echo off
start /d "D:\Firefox\" firefox.exe
exit
语法
start + /d + 程序路径 + 程序可运行文件(exe)
可选参数
/min 最小化窗口打开
/max 最大化窗口打开
eg2
start explorer d:\
解析
打开d盘
rem和::
eg1
@echo on
:: 这是注释
pause
结果
eg2
@echo on
rem 这是注释
pause
结果
俩者区别
::在echo on的情况下回显命令,rem则不回显
echo和@
eg1
@echo off
rem 这是注释
pause
结果
解析
与上一小节eg2对比,可以看出echo on为开启命令回显,echo off为关闭命令回显
与@的区别
@命令在echo on开启的情况依旧使该命令不回显
eg2
echo.
解析
echo后面紧跟“.”表示输出空行
eg3
echo
解析
显示当前echo状态,即是on或是off
eg4
echo msg
解析
直接输出信息,相当于Java的syso
eg5
echo off
echo on
解析
dos命令行中直接输入上述俩个命令之一可以关闭或开启dos提示符的显示,直到输入相反的命令
eg6
@echo off
echo '测试'>F:/test.txt
pause
解析
将文本内容输出到文件中
eg7
@echo off
echo 追加的内容>>F:/test.txt
pause
解析
追加内容至文档中,默认新起一行
pause
解析
按任意键继续
title
设置窗口标题
color
设置控制台前景色和背景色
mode
配置系统设备
eg
mode con cols=113 lines=15 & color 9f
解析
配置窗口列数和行数
语法
串行口: MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]
[to=on|off] [xon=on|off] [odsr=on|off]
[octs=on|off] [dtr=on|off|hs]
[rts=on|off|hs|tg] [idsr=on|off]
设备状态: MODE [device] [/STATUS]
打印重定向: MODE LPTn[:]=COMm[:]
选定代码页: MODE CON[:] CP SELECT=yyy
代码页状态: MODE CON[:] CP [/STATUS]
显示模式: MODE CON[:] [COLS=c] [LINES=n]
击键率: MODE CON[:] [RATE=r DELAY=d]
goto和:
: 设置标签
goto: 跳转至标签
assoc和ftype
assoc #显示所有'文件扩展名'关联
assoc .txt #显示.txt代表的'文件类型',结果显示 .txt=txtfile
assoc .doc #显示.doc代表的'文件类型',结果显示 .doc=Word.Document.8
assoc .exe #显示.exe代表的'文件类型',结果显示 .exe=exefile
ftype #显示所有'文件类型'关联
ftype exefile #显示exefile类型关联的命令行,结果显示 exefile="%1" %*
assoc .txt=Word.Document.8
设置.txt为word类型的文档,可以看到.txt文件的图标都变了
assoc .txt=txtfile
恢复.txt的正确关联
call
eg1(调用外部程序)
@echo off
call C:\Users\wyc\Desktop\sub.bat
echo 1
echo 2
pause
结果
eg2(调用内部程序)
@echo off
call :sub
echo 1
echo 2
:sub
echo 3
echo 4
pause
结果
备注
此处按了俩次任意键
find
语法
FIND [/V] [/C] [/N] [/OFF[LINE]] “string” [[drive:][path]filename[ …]]
eg1(不加任何参数)
@echo off
echo 1111 >test.txt
echo 2222 >>test.txt
find "1111" test.txt
del test.txt
pause
结果
eg2(参数V)
@echo off
echo 1111 >test.txt
echo 2222 >>test.txt
find /V "1111" test.txt
del test.txt
pause
结果
eg3(参数C)(count)
@echo off
echo 1111 >test.txt
echo 2222 >>test.txt
find /C "1111" test.txt
del test.txt
pause
结果
eg4(参数N)
@echo off
echo 1111 >test.txt
echo 2222 >>test.txt
find /N "1111" test.txt
del test.txt
pause
结果
eg5(参数I)(ignore)
@echo off
echo 1111 >test.txt
echo 2222 >>test.txt
echo aaaa >>test.txt
find /I "AAAA" test.txt
del test.txt
pause
结果
shift
解析
命令从第 n 个参数开始移位,每次移一位;n 介于零和八之间
@echo off
call sub.bat 1 2 3 4 5 6
pause
eg1
@echo off
shift /0
echo %1+","+%2+","+%3+","+%4
结果
备注
shift /1结果和上图相同
eg2
@echo off
shift /2
echo %1+","+%2+","+%3+","+%4
结果
eg3
@echo off
shift /3
echo %1+","+%2+","+%3+","+%4
结果
if
语法
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
eg1(成功的情况)
@echo off
dir c:
if errorlevel 1 goto 1
if errorlevel 0 goto 0
:0
echo 命令执行成功
goto exit
:1
echo 命令执行失败
goto exit
:exit
pause
eg2(失败的情况)
@echo off
dir g:
if errorlevel 1 goto 1
if errorlevel 0 goto 0
:0
echo 命令执行成功
goto exit
:1
echo 命令执行失败
goto exit
:exit
pause
结果
eg3
@echo off
if abc==abc echo 相等
if not abc==abc echo 不相等
rem 注意echo这条命令不要换行
pause
结果
eg4
@echo off
if exist test.txt echo 存在
if not exist test.txt echo 不存在
pause
set
变量延迟
eg1
@echo off
set str=a
if %str%==a (
set str=b
echo %str%
)
pause
结果
取消变量延迟
eg2
@echo off
setlocal enabledelayedexpansion
set str=a
if %str%==a (
set str=b
echo !str!
echo %str%
)
pause