您现在的位置是:网站首页> 编程资料编程资料
bat脚本常用命令及亲测示例代码超详细讲解_DOS/BAT_
2023-05-25
349人已围观
简介 bat脚本常用命令及亲测示例代码超详细讲解_DOS/BAT_
【内容】:
注意:编辑bat文件请使用ANSI编码(不然会出现中文乱码)
1、语句注释
rem命令行注释,可以回显(语句会在命令行中显示);
::两个冒号,效果同上,但不会回显。(冒号后加任意非字母数字字符都可起到注释作用)
2、暂停
pause暂停,命令行中出现"请按任意键继续..."
自定义暂停时的文本,如下:
::pause>nul,隐藏原暂停文本 echo 这里是自定义文本! & pause > nul
3、输出和换行
echo后加内容即输出该内容,如:echo "welcome!";
echo.换行命令,即echo后加一个点
4、开启关闭回显
@置于语句前则该条语句不会回显(无视echo on)
echo off关闭回显功能,直到出现echo on,但其本身会回显,故其之前往往和@一起使用,即@echo off(关闭所有回显功能)
5、新建文件、增加文件内容
@echo off rem 格式:echo 文件内容>文件路径 echo @echo off>test1.bat ::其中>>在文末添加,>覆盖原内容 echo echo this is test>>test1.bat echo pause>>test1.bat rem 显示该文件内容 type test1.bat pause

6、设置标题title
@echo off ::title设置标题 title 我测试一下! pause

7、设置颜色
例:color 0A

8、if语句判断
特别特别注意:if语句块在执行时是当做一条语句加载的,故需要通过11中的延迟赋值来解决其内部变量引用的问题
::if常规用法,注意空格 @echo off :start set /p a= if not %a%==1 ( echo 请输入1 goto start ) else ( echo 输入正确 ) pause>nul
@echo off if not exist d:\test.bat ( echo @echo off>d:\test.bat ) else ( del d:\test.bat ) pause>nul
@echo off set a=1 if defined a ( echo 已定义a ) else ( echo 未定义a ) pause>nul
@echo off set a=123 set b=abc set c=12 ::/i字符串大小写忽略 if /i %b% equ ABC ( if %a% geq %c% ( echo %a%^>=%c% ) else ( echo %a%^<%c% ) ) else ( echo %b%不等于ABC ) pause>nul
如上的操作数可以是字符串、数值、变量;当参与比较的字符串是字符串时,将被转换为对于的ASCII码进行比较;比较运算符有如下:

if语句中的'与'、'或'、'非'逻辑判断
::'与'一般用if嵌套实现 @echo off set /p a= ::当a小于10且大于0 if %a% lss 10 if %a% gtr 0 echo 输入的是0-10 pause
::'非'用not可以实现 @echo off set /p a= ::a不小于10 if not %a% lss 10 ( echo 输入的是不小于10 ) pause
::'或'实现一:使用if嵌套(代码简洁但逻辑不太好理解) @echo off set /p a=请输入a: set /p b=请输入b: ::a小于5或b小于5时 if %a% lss 5 (echo a小于5或b小于5) else (if %b% lss 5 (echo a小于5或b小于5) else (echo a、b都不小于5)) pause
::'或'实现二:使用额外变量标记结果,再判断该变量(逻辑简单但代码多) @echo off set /p a=请输入a: set /p b=请输入b: ::a小于5或b小于5时 set flag=0 if %a% lss 5 set flag=1 if %b% lss 5 set flag=1 if %flag% equ 1 ( echo a小于5或b小于5 ) else ( echo a、b都不小于5 ) pause
9、goto语句跳转
@echo off ::使用冒号加标记名作为goto语句的标记 :start set /p param= if %param%==4 (echo 请不要输入4! & goto start) else (echo %param%) pause
10、set用法之接收用户输入数据
@echo off set /p param=请输入密码: echo %param% pause

11、set用法之定义变量和延迟赋值
请特别注意这个机制,真的是特别恶心
::输出为1 @echo off set a=1 set a=2&echo %a% pause
注意:批处理在运行“set a=2&echo %a%”之前,会先把这一句整句读取并做了预处理,即对变量a赋了值,那么%a%值为1,为解决该问题,批处理设计了变量延迟。也就是说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,具体实现如下:
::输出为2 @echo off&setlocal enabledelayedexpansion set a=1 set a=2&echo !a! pause
注意:'变量名=值'中间不要有空格
@echo off ::将0赋值给b set b=0 echo b:%b% ::将空格和0赋值给a set a= 0 echo a:%a% ::无法赋值 set c =0 echo c:%c% pause

12、set用法之系统变量
@echo off ::查看所有环境变量 echo ----------------ALL---------------------- set echo ----------------END---------------------- ::查看环境变量JAVA_HOME的值 if defined JAVA_HOME ( echo JAVA_HOME:%JAVA_HOME% ) else ( echo 未定义JAVA_HOME ) pause
13、set用法之定义数字表达式
@echo off set a=1&set b=6 set c=%a%+%b% ::输出1+6 echo %c% set d=a+b ::输出a+b echo %d% set /a e=a+b ::输出7 echo %e% pause
14、for语句循环
@echo off ::关键字for、in、do必有,括号必有 ::分隔符可以是逗号、分号、等号、空格 ::输出为A换行1换行B。。。 for %%i in (A,B,C) do echo %%i & echo 1 pause>nul
@echo off ::找出D盘下所有文件 for %%i in (d:\*.*) do echo "%%i" pause
@echo off set str=c d e f g h i j k l m n o p q r s t u v w x y z echo 当前硬盘的分区有: for %%i in (%str%) do if exist %%i: echo %%i: pause
@echo off ::找出当前目录下文件名为四个字符的txt文件 for %%i in (????.txt) do echo "%%i" pause
15、变量%0--%9
%0指该文件本身,%1--%9为接收到的参数,如下例子中子程序的%1即为主程序传输的param1,%2即为param2
::该文件名为test.bat @echo off echo 这是主程序第一个输出 timeout 2 start test1.bat param1 param2 timeout 2 echo 这是主程序第二个输出 pause
::该文件名为test1.bat @echo off timeout 2 echo 这是子程序第一个输出 echo 这是接收到的第一个参数%1 和第二个参数%2 pause
@echo off set /p param= if %param%==4 (echo 请不要输入4!) else (echo %param%) ::%0在当前窗口重新调用自身 %0
16、切换目录
::@echo off ::显示当前目录 cd ::切换到根目录 cd\ ::盘符加冒号,切换到该盘 d: ::切换到e:hi目录下(目录名不区分大小写) cd /d e:\hi ::保存当前目录,并切换当前目录为d:\test pushd d:\test ::恢复当前目录为刚才保存的e:\hi popd pause

17、md命令创建文件夹
::创建文件夹 md e:\test\test1 ::文件夹名有空格需要加引号 md "e:\test op" ::空格隔开,创建多个 md e:\test1 e:\test9\test2 "e:\test5 lmn"
18、rd命令删除文件夹
@echo off ::删除e:\test op下空文件夹,不为空不能删除 rd "e:\test op" ::删除e:\test9下所有文件夹,不管是否为空,但会询问是否确认删除[Y/N] rd /s e:\test9 ::自定义删除提示信息 echo 是否删除[Y/N]: & rd /s e:\test9>nul ::/s/q联合使用,不会询问直接删除 rd /s/q e:\test9
19、move命令移动文件(夹)
@echo off ::文件夹移动,如果test文件夹存在,则将test5文件夹移动到test文件夹下 ::如果test文件夹不存在,则将test5文件夹移动到test1文件夹下并重命名为test ::注意:文件夹移动不能跨分区 move e:\test5 e:\test1\test ::将d:\test\1.txt文件移动到e:\下并重命名为23.txt ::如果该目录已存在23.txt,则会覆盖 move d:\test\1.txt e:\23.txt>nul&&echo 移动成功并重命名 ::将e:\23.txt文件移动到e:\test文件夹下 move e:\23.txt e:\test>nul&&ech
相关内容
- Win10利用bat文件实现文件与文件夹批量重命名的实践_DOS/BAT_
- 批处理命令批量复制文件并重命名的实现_DOS/BAT_
- 批处理命令call、start、goto的使用_DOS/BAT_
- Windows环境bat脚本获取文件的创建时间_DOS/BAT_
- VBScript教程 第三课VBScript数据类型_vbs_
- VBScript教程 第四课VBScript变量_vbs_
- VBscript教程 第五课 VBScript常数_vbs_
- VBScript教程 第六课VBScript运算符_vbs_
- VBScript教程 第七课使用条件语句_vbs_
- VBScript教程 第八课 使用循环语句_vbs_
点击排行
本栏推荐
