bat批处理文件 —— 用于自动化环境配置和项目执行

文章目录

一、什么是 bat ?

batch脚本(简称:bat或批处理脚本):用于自动化批量执行按照一定顺序排列而成的 DOS 命令集合。

  • 批处理脚本文件的扩展名为 .bat(或 .cmd)
  • 双击脚本文件或在命令提示符中输入脚本文件名来运行。
  • 相当于 DOS 的一个外部命令,是一门比较冷门的脚本语言,适用于 DOS 和 Windows 系统。
  • 不需要搭建环境、代码可直接执行而不需要编译成可执行文件。
  • 编程水平远不如 C/C++、Python 等编程语言,也十分不规范。

1.1、支持 bat 的编辑软件

以下是一些支持 bat 编辑的常用软件:

  • 文本编辑器
    • Notepad(记事本)
      • 优点:Windows 自带,简单易用。
      • 缺点:功能有限,缺少高级功能如语法高亮和自动完成。
      • 使用方法:右键点击 .bat 文件,选择 " 编辑 "。
    • Notepad++
      • 优点:免费开源,支持语法高亮、插件丰富。
      • 缺点:需要单独下载和安装。
      • 下载地址:Notepad++ 官方网站
    • Sublime Text
      • 优点:跨平台,功能强大,支持多种编程语言的语法高亮和自动完成。
      • 缺点:需要购买许可证,免费版有弹窗提示。
      • 下载地址:Sublime Text 官方网站
    • Visual Studio Code
      • 优点:免费开源,功能强大,支持插件扩展,跨平台。
      • 缺点:需要单独下载和安装。
      • 下载地址:Visual Studio Code 官方网站
  • 集成开发环境 (IDE)
    • PyCharm
      • 优点:强大的 Python 开发环境,支持多种编程语言和文件类型。
      • 缺点:需要购买许可证,社区版功能有限。
      • 下载地址:PyCharm 官方网站
    • Eclipse
      • 优点:免费开源,功能强大,支持多种编程语言和插件。
      • 缺点:需要单独下载和安装,初学者可能觉得界面复杂。
      • 下载地址:Eclipse 官方网站
    • IntelliJ IDEA
      • 优点:功能强大,支持多种编程语言和文件类型。
      • 缺点:需要购买许可证,社区版功能有限。
      • 下载地址:IntelliJ IDEA 官方网站
  • 在线编辑器
    • repl.it
      • 优点:在线编辑和运行代码,支持多种编程语言。
      • 缺点:需要网络连接,功能较本地编辑器有限。
      • 使用方法:repl.it 网站
    • CodeSandbox
      • 优点:在线编辑和运行代码,支持多种编程语言和框架。
      • 缺点:需要网络连接,功能较本地编辑器有限。
      • 使用方法:CodeSandbox 网站

1.2、常用命令

python 复制代码
rem        添加注释
@echo off  关闭回显,只显示命令执行结果
title      设置DOS窗口的标题
chcp 65001 解决中文乱码问题

echo       显示消息或变量的值
set        定义或显示环境变量
call       调用另一个bat脚本或子程序

if         执行条件判断
for        执行循环
goto       跳转到脚本中的特定标签
copy       复制文件或文件夹
type       显示文本文件的内容
ren        重命名文件
replace    替换文件
del        删除文件

cd         切换目录
md         创建目录
rd         删除目录
dir        显示目录下的子目录和文件

cls        清屏
help       提供Windows命令的帮助信息
pause      暂停脚本执行,直到用户按下任意键
exit       退出脚本执行,窗口关闭

三、项目实战

3.1、入门案例

python 复制代码
rem test.bat

@echo off
title this is a test
chcp 65001

echo hello 世界
set /p name=Enter your name:
echo Hello, %name%!

pause

3.2、(自动化)环境配置与python库安装

python 复制代码
REM "Creating and activating conda environment py39."
call conda env remove --name py39 -y
call conda create --name py39 -y
call conda activate py39
call conda install python=3.9.15 -y

REM "Installing packages from requirements.txt...(The Python version is not specified in requirements.txt.)"
call pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
call conda install openjdk=11 -y

echo "Installation completed. Press any key to exit."
pause

3.3、将 bat 当成一个简易的 .exe 可执行文件

  • (第一步)将项目中的所有 .py 文件封装为 .pyd 文件
    • 若直接调用py文件,可以省去第二步;
  • (第二步)新建一个 main.py 文件,用于调用项目的主程序入口(bat 只支持 py 调用,不支持 pyd 调用);
  • (第三步)使用 run.bat 文件调用 main.py 文件;
python 复制代码
# code/calculate.pyd

def plass():
    a, b = 1, 3
    print(f"a={a}, b={b}, a+b={a+b}")
    return a + b

if __name__ == "__main__":
    plass()
  • (2)新建一个 main.py 文件,用于调用项目的主程序入口(bat 只支持 py 调用,不支持 pyd 调用);
python 复制代码
# code/main.py

from calculate import plass

if __name__ == "__main__":
    plass()
    print("result")
  • (3)使用 run.bat 文件调用 main.py 文件 ------ 双击 .bat 执行项目
python 复制代码
chcp 65001
rem 必须激活python环境,且确保文件路径正确,否则py文件无法执行。

cd ./code
call activate py39  
@REM call python main.py
call python -m main
if %errorlevel% neq 0 echo Error: %errorlevel%

pause

文件路径错误 :没有找到 py 文件

没有python环境 :错误代码 9009 通常表示批处理脚本找不到指定的命令或文件。

四、标识符详解

4.1、rem:添加注释

python 复制代码
rem This is a comment and will not be executed
echo This is a visible message
pause

4.2、@echo off:关闭回显,只显示命令执行结果

python 复制代码
@echo on
echo This is a visible message 1
@echo off
echo This is an invisible message 2
echo This is an invisible message 3
pause

4.3、title:设置DOS窗口的标题

python 复制代码
title My DOS window
pause

4.4、chcp 65001:解决中文乱码问题

python 复制代码
chcp 65001
echo 你好,世界!
pause

4.5、echo:显示消息或变量的值

python 复制代码
chcp 65001
echo 你好,世界!
pause

4.6、set:定义或显示环境变量

python 复制代码
chcp 65001
set MYVAR=Hello, World!
echo %MYVAR%
pause

4.7、call:调用另一个bat脚本或子程序

python 复制代码
rem test.bat
chcp 65001
call other_script.bat
pause
python 复制代码
rem other_script.bat
chcp 65001
echo 你好,世界!
pause

4.8、if:执行条件判断

python 复制代码
chcp 65001

set VAR=1
if %VAR%==1 (
    echo VAR 等于 1
) else (
    echo VAR 不等于 1
)

pause

4.9、for:执行循环

python 复制代码
chcp 65001
for %%i in (1 2 3) do echo %%i
pause

4.10、goto:跳转到脚本中的特定标签

python 复制代码
chcp 65001

echo 开始
goto :end
echo 这行不会被执行
:end
echo 结束

pause

4.11、cls:清屏

python 复制代码
chcp 65001

echo 开始
cls
pause

4.12、help:提供Windows命令的帮助信息

python 复制代码
chcp 65001
help chcp
pause

4.13、pause:暂停脚本执行,直到用户按下任意键

python 复制代码
chcp 65001
echo 脚本开始
pause
echo 脚本继续
pause
echo 脚本结束
pause

4.14、exit:脚本立即终止,窗口关闭或返回命令提示符

python 复制代码
chcp 65001
echo 脚本开始
exit
echo 这行不会被执行
pause

"""
脚本开始
(脚本立即终止,窗口关闭或返回命令提示符)
"""
相关推荐
兵慌码乱2 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot4 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海9 小时前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱11 小时前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽16 小时前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码16 小时前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱1 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵1 天前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio1 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户0332126663671 天前
使用 Python 从零创建 Word 文档
python