学习bat批处理文件



一、bat是什么?

1.1 简单介绍

bat文件是dos下的批处理文件。bat文件它可以执行重复性任务,bat文件扩展名为 .bat 或 .cmd。
bat 是batch的缩写,直译为批处理。bat文件是存在于dos/windows中的脚本文件,bat的直接操作对象是dos命令,dos命令是system32下的exe或者cmd可执行程序的子集,长驻于内存中,具有简单、处理速度快的特点,取名为批处理毫无争议,也是非图形shell在windows操作系统中的直接体现,可以使用文本编辑器编写,保存为.bat格式。

bat的基本组成部分有数据类型、关键字、特殊符号、控制语句、命令、命令嵌套等。编制完整的bat脚本需要记忆较多的关键字、特殊符号,命令。当然,命令可以使用帮助查看。之后就是这些基本组成部分的搭配使用了。

1.2 bat文件

1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。

2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。

3.批处理的编程能力远不如C语言等编程语言,也十分不规范。

4.每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。

5.C:\AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。

6.大小写不敏感(命令符忽略大小写)

7.批处理的文件扩展名为 .bat 或 .cmd。

8.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
参考指令可以看这篇文章:https://blog.csdn.net/qq_43331089/article/details/124222342

二、第一个bat文件

在记事本中编辑 并且保存在.bat文件 双击运行或者在cmd的命令下运行
代码如下(示例):

@echo off 
set p=jasidfjaoidfja
echo %p%

这是输出p的代码 echo可以理解为输出指令 变量的话用%%括上 set是定义变量
第一行的@echo off是关闭回显

2.1 注释

REM和::用来添加注释:
代码如下(示例):

@echo off
REM 这一行是注释
:: 这一行也是注释 
echo Hello bat
pause

REM、echo、pause都是命令。详情请点

2.2 变量

@echo OFF

SET var1=hello
ECHO %var1%

SET var2=7
ECHO %var2%

PAUSE

输出

hello
7

注意:

请不要在等号两边加空格,比如SET name=Apple是正确的,SET name = Apple不正确。

2.3 /A求表达式的值

@echo OFF

SET var=2+2
ECHO %var%

PAUSE

这里面输出的话是2+2 而不是4

@echo OFF

SET /A var=2+2
ECHO %var%

PAUSE

这样输出为4
检查一个变量是否存在
可使用以下语句来判断 “MyVar” 是否存在。

IF DEFINED MyVar (ECHO It IS defined) ELSE (ECHO It is NOT defined)

2.4 全局变量和局部变量

默认情况下,所有变量都是全局变量。
而在SETLOCAL和ENDLOCAL之间被赋值的变量就是局部变量。

@echo OFF

SETLOCAL
SET var=hello
ECHO %var%
ENDLOCAL

PAUSE

输出hello

2.5 语句写入

if语句

@echo OFF

SET a=1
SET b=2
SET c=2
IF %a%==%b% (echo They are equal) ELSE (echo They are diffrent)
IF %b%==%c% (echo They are equal) ELSE (echo They are diffrent)

PAUSE

输出

They are diffrent
They are equal

判断命令

if \"%1\"==\"/a\" echo 第一个参数是/a

if /i \"%1\" equ \"/a\" echo 第一个参数是/a

/i 表示不区分大小写,equ 和 == 是一样的,其它运算符参见 if/?

if exist c:\test.bat echo 存在c:\test.bat文件

if not exist c:\windows (

          echo 不存在c:\windows文件夹

          )

if exist c:\test.bat ( echo 存在c:\test.bat ) else (  echo 不存在c:\test.bat  )

for循环

FOR %%变量 IN 列表 DO 一些事情

@echo OFF

FOR %%i IN (1 2 3) DO ECHO %%i

PAUSE

输出

1
2
3

/L表示在一个范围中,语法如下:

::FOR /L %%变量 IN (最小值, 增量, 最大值) Do 一些事情
@echo OFF

FOR /L %%i IN (0, 2, 10) DO ECHO %%i

PAUSE

输出

0
2
4
6
8
10

循环路径中的文件 它将输出 “D:/test/” 文件夹下的所有文件

@echo OFF

FOR %%f IN (D:/test/*) DO @ECHO %%f

PAUSE

2.6 函数

使用:函数来定义函数,使用CALL :函数来调用函数。

比如调用一个能做乘法运算的函数:这里面的%~1指的是第一个参数
exit命令: exit /B 返回值

@echo OFF

CALL :test_function 3, 7
EXIT /B 0

:test_function
SET /A result=%~1*%~2
ECHO %result%
PAUSE

EXIT /B 0

输出

21

关于具体用法 可以for /?自行查看
在这里插入图片描述
三、项目案例中.bat文件的应用
cd %~dp0:进入批处理本身所在位置,即E:/test

chcp 65001 rem 这是UTF-8的意思
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
set dt1=%date:~0,4%
set dt2=%date:~5,2%
set dt3=%date:~8,2%
::设定变量&赋值,格式为“set”+[空格]+[变量]+“=”+“值”
::值的格式:“量”(如time)+“:”+“~”+“取的位数”+“,”+“值的位数”(自动补零使用)
echo.
::输出空行
echo  现在是北京时间:
::输出文字
echo.
::输出空行
echo  %dt1%年%dt2%月%dt3%日 %tm1%时%tm2%分%tm3%秒
::实现时间的显示
copy /b *.png+*.zip 成品.png
::主功能命令
pause
::显示“按任意键继续…”

set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
set dt1=%date:~0,4%
set dt2=%date:~5,2%
set dt3=%date:~8,2%
echo.
echo  现在是北京时间:
echo.
echo  %dt1%年%dt2%月%dt3%日 %tm1%时%tm2%分%tm3%秒
echo.
echo  合并请输入“1”后回车执行。
echo.
echo  分解请输入“2”后回车执行。
echo.
echo  退出请输入“3”后回车执行。
:cho  ::这是开始循环的意思
set choice=
echo.
set /p choice=请选择:
IF NOT "%choice%"=="" SET choice=%choice:~0,1%
::如果内容不为      ↓ 的内容,则继续执行。
if /i "%choice%"=="1" goto hecheng
::如果内容为“1”,执行hecheng标签。
if /i "%choice%"=="2" goto tiquyasuobao
if /i "%choice%"=="3" goto exit
echo 选择无效,请重新输入。
echo.
goto cho
::回到cho标签。
@echo off
::关闭回显。
echo.
:hecheng
::命令标签
copy /b *.png+*.zip 成品.png
pause
goto menu
::结束
:tiquyasuobao
for /f "delims=" %%a in ('dir /a-d /b 欲分解.png') do (
ren "%%~a" "分解后.zip"
)
::更改文件名。
pause
goto menu
:exit
@ECHO OFF
goto menu
::退出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依嘫_吃代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值