windos批处理常用指令详细讲解(1)

一.批处理相关介绍

  1. 什么是批处理文件?批处理文件的作用?
    批处理文件(Batch File,简称 BAT文件)是一种在DOS 下最常用的可执行文件.操作灵活,可以适应各种复杂的计算机操作.
  2. 如何编写批处理文件?
    在记事本,写字板上编写,保存改个后缀为.bat即可

二.批处理常用指令介绍

  1. REM和::
  2. ECHO和@
  3. PAUSE
  4. ERRORLEVEL
  5. TITLE
  6. GOLOR
  7. GOTO和;
  8. FIND
  9. STSRT
  10. assoc和ftype
  11. pushd和popd
  12. CALL
  13. SHIFT
  14. IF
  15. setlocal与变量延迟

备注:希望记住指令"commond/?",这个指令可以查看window所有指令的参数用法

REM 和 ::

解释:此指令类似java/C..语言的注释,二者区别是REM注释的描述,会再执行bat脚本的时候将描述回显出来,
而::注释的描述,在指令bat脚本时,不会将描述回显

实例:

rem 这是我的第一个bat脚本
:: 这是我的第一个bat脚本
pause

在这里插入图片描述

ECHO 和 @

解释:echo类似java的print的打印输出语句,但是ech出了可以打印还有其它的功能
1. echo [context]    输出提示语句
2. echo off   关闭DOS提示符的显示,使屏幕只留下一个下划线形状的光标,在输入echo on即可打开显示
3. echo./echo+/echo*   输出一个空行
4. echo[文件内容]>[文件名]   建立新文件
5. echo[文件内容]>>[文件名]   新增文件内容

实例:
echo off
echo “你好”
echo “关闭DOS提示符”
echo on
echo “你好”
echo “打开DOS提示符”
::在当前路径下建立文件
echo “hello”> ./new_file.txt
echo “是否新增文件内容,按”&pause>nul
echo “word”>>./new_file.txt
pause
在这里插入图片描述
@指令作用只有禁止某条命令回显
实例:
echo “你好”
echo “我好”
echo “分割线”
@echo “你好”
@echo “我好”
pause
![在这里插入图片描述](https://img-blog.csdnimg.cn/f6c7416c54f84a38a08dfcae0b5aa260.png

PAUSE

解释:含义是暂停的意思。执行bat脚本的时候,如果不加pause指令时,我们执行bat脚本就会是一闪而过的出现控制台窗口,
     如果加了pause指令,可以让我们控制台窗口停留,并且还会给出一段提示语“请按任意键继续"

修改pause的提示值
实例:
@echo “请按任意键继续”&pause>nul
在这里插入图片描述

ERRORLEVEL

解释: 含义表示程序状态返回码,返回上一条指令执行状态,0为正常,其他为非正常

实例:
@echo off
rem “执行正常”
echo “你好”
echo 命令执行状态码: %errorlevel%
pause
rem “执行错误”
/? echo
echo 命令执行状态码: %errorlevel%
pause

在这里插入图片描述

TITLE

解释:该指令修改控制台窗口的标题

实例:
@echo off
echo “修改控制台窗口”
title ”我是控制台“
pause
在这里插入图片描述

COLOR

解释:设置控制台的前景色和背景色

注: 使用color /?可以查看color的颜色表
在这里插入图片描述
实例
color 0C 设置背景为黑色,字体为红色
在这里插入图片描述

GOTO 和 :

解释:GOTO和:指令含义是跳转的意思,那GOTO是跳转到标签处,标签的是用:定义的,标签格式:[name]

实例:
@echo off
:begin
set /a var+=1
echo 打印的值:%var%
if%var% leq 4 goto begin
pause
在这里插入图片描述

FIND

解释: FIND指令,在文件中搜索字符串
FIND [/V][/C][/N][/I][/OFF[LINE]] "string" [[dirve:][path]filename]]
1. /V 显示所有未包含指定字符串的行
2. /C 仅显示包含字符串行的次数
3. /N 显示行号
4. /I 搜索字符串时忽略大小写
5. /OFF[LINE] 不要跳过具有脱机属性集的文件
6. "stirng" 指定要搜索的文本字符串
7 [[dirve:][path]filename] 指定要搜索的文件 

实例:
@echo off
echo “显示new_file.txt文件全部内容”
type .\new_file.txt
echo"---------------------分割线----------------------"
echo “显示所有未包含指定字符串的行”
find /v “你好” .\new_file.txt
echo “--------------------分割线----------------------”
echo “显示包含指定字符串出现次数”
find /c ''hello" .\new_file.txt
echo “--------------------分割线----------------------”
echo “显示行号”
find /n “大家好” .\new_file.txt
echo “--------------------分割线----------------------”
echo “搜索忽略大小写”
find /i “hello”.\new_file.txt
pause
在这里插入图片描述

START

解释:批处理中调用外部程序命令(该外部程序在新的窗口中运行,批处理程序继续往下执行,不理会外部程序执行的情况)
如果直接运行外部程序则I必须等待外部程序完成后才可以继续执行剩余的指令

实例:
@echo off
echo “调用外部程序”
start /wait C:\Users\admin\Desktop\f.bat
echo “调用完毕”
echo “执行本脚本程序”
pause

其中桌面f.bat中的内容
title 标题
pause
在这里插入图片描述
把f开启的cmd面板关掉,a中内容才会向下运行
在这里插入图片描述

assoc 和 ftype

解释:assoc指令,设置"文件扩展名"关联,关联到"文件类型"
ftype指令,设置"文件类型"关联,关联到"执行程序与参数"

实例:
@echo off
echo .txt文件扩展名,对应的文件类型: & assoc.txt
echo txtfile文件扩展名,对应的文件类型: & ftype txtfile
pause

在这里插入图片描述

pushd 和 popd

解释:pushd和popd指令,切换保存的目录

实例:
@echo off
echo C盘目录下创建一个temp目录
mkdir c:\temp
echo.
echo D盘目录下创建一个temp目录
mkdir d:\temp
echo.
echo 保存当前工作目录
cd /d c:\temp
pushd c:\temp
echo 当前目录是: & chdir
echo.
echo ----------分割线-----------
echo 切换工作目录到D盘
cd /d d:\temp
echo 当前目录是: & chdir
echo.
echo ----------分割线-----------
echo 切换到保存的目录
popd
echo 当前目录是: & chdir
echo.
cd %~dp0
echo ----------分割线-----------
echo 收尾工作:删除创建的目录
rmdir /q c:\temp
rmdir /q d:\temp
echo 收尾完毕
pause
在这里插入图片描述

CALL

解释:CALL指令可以在批处理过程中调用另一个批处理程序,当另一个
      批处理程序执行完后,再继续执行原本的命令

实例1:
@echo off
:: call调用外部程序与start调用外部程序
:: call与start不同的是call不会另外调用一个新的控制台窗口来执行调用的批处理脚本
echo “调用修改控制台标题脚本”
call .\f.bat
echo “调用程序执行完毕”
pause
在这里插入图片描述
实例2:
@echo off
echo “这里是第一句话”
call :sub_1
echo “这里是第三句话”
pause
:: --------子程序--------
:sub_1
echo “这里是第二句话”
goto :eof
在这里插入图片描述

格式:CALL [drive:][path]filename [batch-parameters]

也可以调用自身脚本中的命令段,相当于调用子程序,但是被调用的命令段以标签开始,以“goto :eof”结束

格式:CALL:label arguments

另外,批脚本文本参数参照(%0%1、等等)已如下改变:
批脚本里的 %* 指出所有的参数(%1 %2 %3 %4 %5 ...)

批参数(%n)的替代已被增强。你可以使用以下语法:
%~1 - 删除引号("),扩展 %1

%~f1 -%1 扩展到一个完全合格的路径名

%~d1 - 仅将 %1 扩展到一个驱动器号

%~p1 - 仅将 %1 扩展到一个路径

%~n1 - 仅将 %1 扩展到一个文件名

%~x1 - 仅将 %1 扩展到一个文件扩展名

%~s1 - 扩展的路径只含有短名

%~a1 -%1 扩展到文件属性

%~t1 -%1 扩展到文件的日期/时间

%~z1 -%1 扩展到文件的大小

%~$PATH:1 - 查找列在 PATH 环境变量的目录,并将 %1

扩展到找到的第一个完全合格的名称。如果

环境变量名未被定义,或者没有找到文件,

此修改符会扩展到空字符串

可以组合修改符来取得多重结

%~dp1 - 只将 %1 扩展到驱动器号和路径

%~nx1 - 只将 %1 扩展到文件名和扩展名

%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,

并扩展到找到的第一个文件的驱动器号和路径。

%~ftza1 -%1 扩展到类似 DIR 的输出行。

在上面的例子中,%1 和 PATH 可以被其他有效数值替换。

%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*

实例3:
@echo off
::在当前工作目录下创建一个临时文件
echo “这是一个临时文件” > temp.txt
call :sub temp.txt
pause
:: %1指的是temp.txt这个参数,%0指的是这个脚本本身,%2、%3以此类推
:sub
echo “脚本本身参数扩展”
echo 脚本工作路径:%~dp0
echo.
echo “temp.txt参数扩展”
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
goto :eof
在这里插入图片描述

SHIFT

SHIFT指令更改批处理文件中可替换参数的位置,更改参数位置并不会影响%0和%1
格式: SHIFT[/n]

实例:
@echo off
echo “这是一个临时文件” > temp.txt
call :sub 1 2 3 4 5 6 7 8
pause
:sub
echo 第二位参数的值:%~2
rem 向左移动一位
shift /1
echo 第二位参数的值:%~2
goto :eof
在这里插入图片描述

IF

解释:IF指令与其他编程语言一样是一种条件判断语句	
格式:
1. IF ERRORLEVEL number command
2. IF string1 == string2 command
3. IF EXiST fiename command
4. IF ....(...) ELSE (...)

1.内容详解
IF ERRORLEVEL这个语句必须放在某个命令的后面,执行命令后由IF ERRORLEVEL来判断命令的返回值
number数值的范围为0~255,判断值的时候排序顺序是由大到小。这是因为IF ERRORLEVEL 1表示的是ERRORLEVEL 大于等于 1

实例1:
@echo off
::dir c可以查看
dir c:
rem 退出码为>=1就跳转至标签1处执行,退出码为>=0就跳转至标签0处执行
if errorlevel 1 goto 1
if errorlevel 0 goto 0
rem 上面两条条件判断语句不可交换位置,如果就交换位置,就永远是>=0
:0
echo 命令执行成功
goto exit
:1
echo 命令执行失败
goto exit
:exit
pause
在这里插入图片描述
2.内容详解
string1和string2都是字符的数据,英文内字符的大小写将看作不相同(如果想不区分大小写成”IF /I string1==string2 command“,即可不区分大小写)
比较符号:
==:等于,>=:大于等于,<=:小于等于,>:大于,<:小于
也可以使用关键字来代表比较
equ:等于,neq:不等于,geq:大于等于,lep:小于等于,gtr:大于,lss小于
为了防止字符串之间有空格不好比较,使用字符串界定符,格式
IF “string1”/[string1]/{string1} == “string2”/[string2]/{string2} command

实例2:
@echo off
echo --------等于比较---------
if “hello”“hello” echo 比较完成
rem 其它比较可以类推
echo --------忽略大小写---------
echo “hello与HELLO是否相等:” & if /i “hello”
“HELLO” echo 变量相等
pause
在这里插入图片描述
3.内容详解
判断文件存不存在
实例3:
if exist .\f.bat echo 文件存在
pause
在这里插入图片描述

setlocal 与 变量延迟

解释:批处理读取命令是按行读取,在处理之前要完成必要的预处理工作,这其中就包括对命令中
变量重复赋值

实例1:
@echo off
set a=2
set a=5 & echo %a%
pause
在这里插入图片描述
结果不是我们想要的5,为什么呢?因为打印a的值和赋值5同时进行的,批处理无法感知变量的动态变化,为了感知动态变化,批处理设置了变量延迟

开启延迟实例2:
@echo off
setlocal enabledelayedexpansion
set a=2
set a=5 & echo !a!
pause
在这里插入图片描述
注意:变量延迟的启动语句是”setlocal enabledelayedexpansion“,并且变量要用一对”!!“将变量括起来,否则就没有变量延迟的效果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值