最终版:CMD/bat批处理命令批量渲染多个blender文件 - NOTEBOOK
最终版:CMD/bat批处理命令批量渲染多个blender文件
Blender系统脚本/命令Posted on 2025-12-05
摘要 : 完美解决了原本需要手动修改代码而可能的出错情况。现在不需要手动将文件名写进代码里,程序自动识别当前文件夹中的blend文件并显示为列表,用户输入序号后就开始按顺序渲染。
渲染结果保存在同路径下的同名文件(需要在blender中设置输出为图片还是视频)
来自豆包AI并进行修改和校验后的代码。
❱ 操作:
1.将代码保存为 ANSI 编码的 bat 文件。
2.修改代码中 blender 程序的位置参数。
3.拷贝该 bat 文件到要渲染的 blend 文件夹中
4.运行,根据提示输入序号,例如: 1 2 3 5 8
❱ 代码
@echo off
:: 切换控制台编码为UTF-8,解决中文路径/文件名乱码
:: chcp 65001 >nul 2>&1
:: 启用延迟扩展,支持循环内变量实时读写
setlocal enabledelayedexpansion
:: 初始化变量
:: 文件总数(.blend文件数量)
set "file_total=0"
:: 输入错误标记(0=无错误,1=有错误)
set "error_flag=0"
:: 批处理文件所在的文件夹路径
set "bat_dir=%~dp0"
:: Blender程序路径(可根据实际安装路径修改)
set "blender_path=D:\K-Cycles v4.1 Stable v20240330\blender.exe"
title 渲染:%cd%
echo.
echo ============================================
echo .blend 文件选择渲染工具
echo ============================================
echo.
:: 第 0 步:检查Blender程序是否存在
if not exist "!blender_path!" (
echo 错误:未找到Blender程序!
echo 路径:!blender_path!
echo 请检查路径是否正确后重试。
echo.
pause >nul
exit /b
)
:: 第一步:扫描当前文件夹下的.blend文件,存入模拟数组
:: 数组索引从1开始(贴合用户序号习惯)
for %%f in ("!bat_dir!*.blend") do (
:: 文件计数+1
set /a file_total+=1
:: 存储文件完整路径到数组(变量名:blend_1、blend_2...)
set "blend_!file_total!=%%f"
:: 存储仅文件名(含扩展名,不含路径)到数组(blend_name_1、blend_name_2...)
set "blend_name_!file_total!=%%~nf"
)
:: 检查是否找到.blend文件
if !file_total! equ 0 (
echo 未检测到任何.blend后缀的文件!
echo.
pause >nul
exit /b
)
:: 第二步:展示文件列表(带序号)
echo 共找到 !file_total! 个.blend文件:
echo --------------------------------------------
:: 循环遍历数组,打印文件列表
for /l %%i in (1,1,!file_total!) do (
echo [%%i] !blend_name_%%i!
)
echo --------------------------------------------
echo.
:: 第三步:获取用户输入(多个序号,空格分隔)
set "user_choice="
set /p "user_choice=请输入要渲染的文件序号(空格分隔,如:1 2 5):"
:: 校验输入是否为空
if "!user_choice!" equ "" (
echo 输入不能为空!
echo.
pause >nul
exit /b
)
:: 第四步:解析用户输入,按序渲染对应文件路径
echo.
echo ============================================
echo 你选择的文件完整路径:
echo ============================================
:: 遍历用户输入的每个序号(按空格分割)
for %%n in (!user_choice!) do (
:: 校验1:输入是否为纯数字
set "is_number=1"
for /f "delims=0123456789" %%c in ("%%n") do (
set "is_number=0"
)
:: 非数字则标记错误并跳过
if !is_number! equ 0 (
echo 序号"%%n":不是有效数字,跳过
set "error_flag=1"
goto :next_number
)
:: 校验2:序号是否在有效范围(1~文件总数)【修复语法错误】
if %%n lss 1 (
echo 序号"%%n":超出范围(有效1~!file_total!),跳过
set "error_flag=1"
goto :next_number
)
if %%n gtr !file_total! (
echo 序号"%%n":超出范围(有效1~!file_total!),跳过
set "error_flag=1"
goto :next_number
)
:: 校验通过,先获取文件完整路径,再提取纯文件名
set "full_path=!blend_%%n!"
:: 打印文件信息(完整路径 + 单独一行纯文件名)
echo 序号%%n:
echo 完整路径:!full_path!
echo 文件名:!blend_name_%%n!
:: 调用Blender渲染该文件(核心新增逻辑)
title 渲染:!blend_name_%%n!
echo 开始渲染...
echo 执行命令:"!blender_path!" -b "!full_path!" -o "//!blend_name_%%n!_" -a
echo.
:: 执行渲染命令(-b=后台渲染,-a=渲染所有帧;如需调整参数可修改)
"!blender_path!" -b "!full_path!" -o "//!blend_name_%%n!_" -a
:: 跳过当前错误序号,处理下一个
:next_number
)
:: 第五步:渲染结束提示
echo ============================================
if !error_flag! equ 0 (
echo 所有选择的文件已全部渲染完成!
) else (
echo 部分序号输入错误,有效序号已渲染!
)
echo.
:: 暂停窗口,避免闪退
pause >nul
:: 关闭延迟扩展,结束局部环境
endlocal
❱ 旧版链接
新:自动连续渲染多个Blend工程文件(win命令行 bat 批处理)自动连续渲染多个Blend工程文件(win命令行 bat 批处理)