• Windows批处理:bat文件学习



    友情提醒:

    先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。

    第一章、快速了解Windows批处理

    1.1)Windows批处理相关概念介绍

    1.1.1)批处理的起源

    ①批处理(Batch),也称为批处理脚本。在计算机系统还是DOS(磁盘操作系统是一种早期的命令行操作系统)时期时被大量使用,用来对某对象进行批量的处理,通常被认为是一种简化的脚本语言,现在它应用于DOS和Windows系统中。批处理文件的扩展名为.bat(即是batch的缩写)简称 BAT文件 。

    ②在Windows NT以后的平台中,还加入了以.cmd为扩展名的批处理文件,其性能比.bat文件更加优越,执行也与.bat文件一样方便快捷。

    1.1.2)bat文件介绍

    bat文件介绍
    批处理文件通常使用 .bat 或 .cmd 扩展名,并且可以包含用于执行各种任务的命令,例如文件操作、系统管理和自动化任务。Windows批处理文件可以通过文本编辑器创建,并且可以在命令提示符窗口中运行。这些命令在双击文件时按顺序执行。

    解决了什么问题
    Windows批处理文件解决了许多自动化任务和系统管理问题。它们允许用户编写一系列命令,在双击文件时自动执行这些命令。这样可以简化重复性任务的执行,提高效率,简化复杂任务的执行,从而减少人为错误。

    1.2)Demo

    1.2.1)创建文件添加命令

    ①创建一个扩展名为 .bat 的文件
    创建echo.bat文件
    在这里插入图片描述
    ②使用记事本/文本文档方式打开,在其中添加以下命令:

    @echo off
    echo helloworld
    pause
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    ③双击bat文件
    在这里插入图片描述

    1.2.2)bat脚本中的命令解释

    rem命令是用来添加注释的
    @echo off 命令用于关闭命令提示符窗口中的命令回显。
    echo helloworld 用于在控制台打印 “helloworld”。
    pause 命令用于暂停控制台,以便你可以看到 “helloworld” 的输出。
    双击运行,将在控制台中看到 “helloworld” 的输出。

    第二章、实例

    2.1)点击bat文件,批量备份文件

    2.1.1)定期将重要文件复制到备份目录,以防止数据丢失。

    在filebak.bat文件中加入以下命令:

    @echo off
    set source=E:\test.doc
    set destination=D:\Backup
    
    xcopy %source% %destination% /E /C /H /R /Y
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.1.2)命令解释

    @echo off:关闭批处理文件的命令回显,这样在执行过程中不会显示每个命令的详细信息。

    set source=E:\test.doc:设置一个名为source的变量,其值为E:\test.doc,这是想要备份的重要文件的路径。

    set destination=D:\Backup:设置一个名为destination的变量,其值为D:\Backup,这是想要将文件备份到的目标目录路径。

    xcopy %source% %destination% /E /C /H /R /Y:这是实际执行文件复制的命令。

    xcopy:用于复制文件和目录的命令。
    %source%和%destination%:之前设置的变量

    /E表示复制目录和子目录,/C表示继续复制,即使出现错误,
    /H表示复制隐藏文件,/R表示覆盖只读文件,
    /Y表示在不提示的情况下覆盖现有文件。
    
    • 1
    • 2
    • 3

    2.2)点击bat文件,批量修改文件名称

    2.2.1)D盘times下文件名中添加统一日期前缀

    添加前文件名称如下:
    在这里插入图片描述
    timeformat.bat文件中添加如下命令,并执行bat文件

    @echo off
    setlocal enabledelayedexpansion
    
    cd /d D:\times
    
    for %%F in (*) do (
        set "filename=%%~nF"
        set "extension=%%~xF"
        set "datestamp=!date:~0,4!!date:~5,2!!date:~8,2!"
        set "names=qq"
    
        ren "%%F" "!names!-!datestamp!-!filename!!extension!"
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    执行timeformat.bat文件后:
    在这里插入图片描述

    2.2.2)命令解释

    @echo off:关闭命令回显,这样在执行过程中不会显示每个命令的详细信息。

    setlocal enabledelayedexpansion:启用延迟环境变量扩展,这允许在循环中使用!来获取变量的延迟扩展值。

    cd /d D:\times:切换当前目录到D:\times。

    for %%F in (*) do (...):这是一个循环命令,用于遍历当前目录中的所有文件。

    set "filename=%%~nF":将文件名存储在filename变量中。

    set "extension=%%~xF":将文件扩展名存储在extension变量中。

    set "datestamp=":创建一个名为datestamp的变量,其中包含当前日期的格式化字符串。

    !date:~0,4!:表示从当前日期中提取从第0个位置开始的4个字符,即年份部分。
    !date:~5,2!:表示从当前日期中提取从第5个位置开始的2个字符,即月份部分。
    !date:~8,2!:表示从当前日期中提取从第8个位置开始的2个字符,即日期部分。

    ren "%%F" "!datestamp!-!filename!!extension!":使用ren命令将文件重命名为包含日期前缀的新文件名。

    2.2.3)D盘times下文件名中批量删除特定的字符

    删除前:
    在这里插入图片描述
    deleteFileName.bat文件中添加如下命令,并执行bat文件

    @echo off
    
    setlocal enabledelayedexpansion
    
    cd /d D:\times
    
    rem 设置要删除的指定字符
    set "char=extension"
    
    for %%F in (*) do (
        set "filename=%%~nF"
        set "extension=%%~xF"
        rem 删除文件名中的指定字符
        set "newname=!filename:%char%=!"
        ren "%%F" "!newname!!extension!"
    )
    
    echo 文件名中的指定字符统一删除完成。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    执行deleteFileName.bat文件后

    在这里插入图片描述

    2.2.4)命令解释

    set "char=extension":设置要删除的指定字符为"extension"。这里的"extension"是一个示例,你可以将其替换为你想要删除的具体字符内容。

    for %%F in (*) do (...):遍历当前目录下的所有文件。

    set "filename=%%~nF":获取文件名部分并赋值给变量filename。

    set "extension=%%~xF":获取文件扩展名部分并赋值给变量extension。

    set "newname=!filename:%char%=!":使用延迟变量扩展,将文件名中的指定字符(在这里是"extension")替换为空,得到新的文件名并赋值给变量newname。

    ren "%%F" "!newname!!extension!":使用ren命令将文件重命名为新的文件名。

    2.3)点击bat文件,自动清理临时文件:

    用于定期清理系统中的临时文件和缓存,以释放磁盘空间。不过感觉还是不要清理了,容易清理错重要文件

    @echo off
    echo 正在清理临时文件,请稍候...
    rem 清理临时文件
    del /q /s %temp%\*.*
    rem 清理缓存
    del /q /s "C:\Windows\SoftwareDistribution\Download\*.*"
    echo 临时文件和缓存清理完成。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.4)自动化测试和部署

    使用批处理文件来自动化软件测试和部署过程,以节省时间和减少人为错误。
    这个太复杂了,算了不学这个,了解了解得了

    第三章、批处理文件中的命令集合

    3.1)常用命令

    项目Value
    @echo off:关闭命令回显,使得在运行批处理文件时不显示每条命令的执行结果。
    echo:用于在命令行中显示文本或变量的值。
    set:用于设置和显示环境变量。
    cd:用于改变当前目录。
    dir:显示目录中的文件和子目录列表。
    copy:复制文件。
    del:删除文件。
    ren:重命名文件。
    start:启动一个新窗口来运行指定的程序或命令。
    pause:暂停批处理文件的执行,等待用户按下任意键继续。
    md:创建当前位置的新目录。
    move:移动文件或目录到另一个目录。
    exit:退出DOS控制台。

    3.2)不常用命令

    项目Value
    assoc:将文件扩展名与文件类型关联起来,显示现有的关联,或删除关联。
    chkdsk:检查磁盘是否存在问题。
    choice:向用户提供选项列表。
    convert:将卷从FAT16或FAT32文件系统转换为NTFS文件系统。
    driverquery:显示所有已安装的设备驱动程序及其属性。
    expand:从压缩的.cab文件中提取文件。
    find:在文件或输入中搜索字符串,并输出匹配的行。
    label:添加、设置或删除磁盘标签。
    more:逐屏显示文件或文件的内容。
    subst:为本地文件夹分配驱动器号,显示当前

    3.3)其他命令

    如果电脑安装了Java的JDK,批处理文件可以使用JDK提供的命令。

    在批处理文件中,就可以使用javac命令来编译Java源文件,使用java命令来运行Java应用程序,以及其他JDK提供的命令。

    REM 编译Java源文件
    javac YourJavaFile.java
    
    REM 运行Java应用程序
    java YourJavaProgram
    
    • 1
    • 2
    • 3
    • 4
    • 5

    同理如果电脑安装了MySQL批处理文件可以使用MySQL提供的命令

    REM 通过批处理文件运行MySQL命令
    mysql -h hostname -u username -p < yourscript.sql
    
    • 1
    • 2
  • 相关阅读:
    python中的exec()、eval()以及complie()
    ChatGPT API 学习
    浅析无人机发展趋势以及如何实现EasyDSS+无人机视频推流?
    react 使用 valtio
    MyBatis 批量插入foreach性能问题
    Revit中模板类图元使用后如何处理?
    Android事件分发机制源码解析
    2022到2023的基于java的毕业设计课题参考
    面渣逆袭:RocketMQ二十三问
    2023高教社杯数学建模国赛的工具箱准备
  • 原文地址:https://blog.csdn.net/baomingshu/article/details/136365867