概述
前言
- 批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。
- 批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。
- 批处理的编程能力远不如C语言等编程语言,也十分不规范。
- 每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。
- C:AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。
- 大小写不敏感(命令符忽略大小写)
- 批处理的文件扩展名为 .bat 或 .cmd。
- 在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
%[0-9]用于传递参数,set用于赋值变量
rem test.bat
rem 传递参数demo
set test1=%1
@echo %0
@echo %1
@echo test1----%test1%
@echo %2
执行结果:
help命令
使用windows自带的帮助工具查询相关语法
注:命令 /? >> 文件路径+文件名.txt可以将内容输出到指定的路径下的指定文件
语法:以下三种为常见的帮助命令语法
- 命令 /?
- 命令 /h
- help 命令
echo命令
语法 echo [no|off] [message]
一般dos命令行没有加@符号,该命令会打印在命令行窗口很影响观看。所以会在bat文件头部使用@echo no来隐藏下面所有echo命令,这样下面的echo命令就不需要加@符号。
上面的例子可以改成这样
echo off
rem test.bat
rem echo命令demo
set test1=%1
echo %0
echo %1
echo test1----%test1%
echo %2
执行结果会多显示一行echo off
@命令
用于隐藏当前行的dos命令。常用于bat文件开头,组合echo off一直使用可以全局隐藏dos命令。
@echo off
rem test.bat
rem echo命令demo
set test1=%1
echo %0
echo %1
echo test1----%test1%
echo %2
只会输出变量0,1,2的值,不会输出dos语句
goto命令
语法:goto 标签行名
例如:
@echo off
set test1=%1
if /I "%test1%" == "1" goto value2
echo %0
echo %1
echo test1----%test1%
:value2
echo %2
执行结果:
当变量1等于1时,跳到后面只输出变量2的值。不等于1就按顺序执行。
rem命令
常用于bat文件中用于添加关于bat文件的注释和代码解释信息。并且不会显示在执行框中。
例如
@rem 这是个bat文件
pause命令
执行到该命令时,会暂停并且等待用户下一步操作之后再执行后续dos命令。
@echo off
rem pause命令demo
:again
echo 123
pause
goto again
执行结果
call命令
可以用于调用外部的批处理文件,并且执行完后依旧会返回父批处理文件继续执行,不用call则不会执行父批处理文件后续dos命令。
注意:子批处理文件不可以使用exit命令。
语法:call [绝对路径(盘符+文件路径)] [文件名称+后缀] [参数]
例如:
@echo off
rem test.bat
rem call命令demo
echo test批处理文件
call F:test1.bat
exit
@echo off
rem test1.bat
rem call命令demo
echo test1批处理文件
执行结果:
可能有人会遇到打印不出来中文或者中文乱码,这时候只需要将文件内容转码成ansi编码即可。
使用notepad打开bat文件–编码–转为ansi编码。
查看右下角文件内容编码,如果是utf-8那么在命令行打印就会乱码,因为命令行是gbk编码。
start命令
用于调用外部批处理程序和dos命令行程序
常用参数:
- MIN 开始时窗口最小化
- SEPARATE 在分开的空间内开始 16 位 Windows 程序
- HIGH 在 HIGH 优先级类别开始应用程序
- REALTIME 在 REALTIME 优先级类别开始应用程序
- WAIT 启动应用程序并等候它结束
- parameters 这些为传送到命令/程序的参数
语法:start /xx /xx 文件路径+文件名.后缀 参数
注:当文件名有空格时,在路径中使用双引号进行包括。(“program files”)
例如:
@echo off
rem test.bat
start /MIN /wait F:test1.bat
exit
@echo off
rem test1.bat
rem start命令demo
echo test1批处理文件
pause
if命令
1.if
语法:if [not] “%变量%” == “值” 待执行dos命令
例如:
@echo off
set test1=%1
if /I "%test1%" == "1" goto value2
echo %0
echo %1
echo test1----%test1%
:value2
echo %2
当变量1等于1时,就跳到value2后执行。
2.if exist
语法:if [not] exist 文件路径+文件名+后缀 待执行dos命令
例如:
--如果存在test1就打印出来
if exist F:test1.bat type F:test1.bat
3.if errorlevel
语法:if [not] errorlevel 数字 待执行dos命令
根据程序执行的返回码进行判断执行不同的dos命令,一般为0或1。
@echo off
XCOPY F:test.bat D:
IF ERRORLEVEL 1 (ECHO 文件拷贝失败
) Else IF ERRORLEVEL 0 ECHO 成功拷贝文件
pause
XCOPY命令详解(XCOPY /?查询相关语法)
1.功能:复制指定的目录和目录下的所有文件连同目录结构。
2.类型:外部命令
3.格式:XCOPY [源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E]
4.使用说明:
(1)XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝隐藏文件和系统文件;
(2)使用时源盘符、源目标路径名、源文件名至少指定一个;
(3)选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录;
(4)选用/V参数时,对的拷贝的扇区都进行较验,但速度会降低。
4.else
语法: if 条件 (成立时执行的命令) else (不成立时执行的命令)
注:如果 else 的语句需要换行,if 执行的行尾需用“^”连接,并且 if 执行的动作需用(括起来),否则报错
例如:
if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^
else (echo comment3 )
5.比较运算符
- EQU - 等于 (一般使用“==”)
- NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法)
- LSS - 小于
- LEQ - 小于或等于
- GTR - 大于
- GEQ - 大于或等于
choice命令
让用户输入一个字符,根据字符执行不同的dos命令。(choice /? 获取语法)
其中常用:
/M为自定义提示消息
/C 指定创建选项列表默认为yn
/N隐藏选项,默认不隐藏
例如:
@echo off
:check
CHOICE /C abcd /M "选项 1 请选择 a,选项 2 请选择 b,选项 3 请选择 c,选项 4 请选择 d。"
if errorlevel 255 echo 错误
@rem errorlevel 判断是优先数值小的,也就是234也满足1,所以必须倒序判断errorlevel
if errorlevel 4 goto actionD
if errorlevel 3 goto actionC
if errorlevel 2 goto actionB
if errorlevel 1 goto actionA
:actionA
echo aaa
goto check
:actionB
echo bbb
goto check
:actionC
echo ccc
goto check
:actionD
echo ddd
goto check
pause
goto check
exit
执行结果:
for命令
主要用于参数在指定的范围内循环执行命令。
语法:for /?查看篇幅较多
查看当前目录下的bat文件
for %c in (*.bat) do (echo %c)
最后
以上就是隐形纸飞机为你收集整理的Windows常用批处理命令的全部内容,希望文章能够帮你解决Windows常用批处理命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复