You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写批处理脚本:监控FFBatch CPU使用率后自动整理Proxy文件

视频制作Proxy文件自动化处理需求与问题
  • 从事视频制作工作,需使用FFBatch批量生成Proxy文件(低画质视频文件,用于提升剪辑流畅度)
  • 现有流程:
    1. 通过批处理脚本启动FFBatch自动渲染,Proxy文件输出至原文件目录下的Proxy子文件夹
    2. 手动执行另一批处理脚本,递归将所有Proxy文件夹内的文件移动至父目录下的「03. Proxy」文件夹,并删除空Proxy目录
  • 期望实现自动化:在启动FFBatch的脚本中调用监控脚本,每10秒检查FFBatch对应进程RenderQuery的CPU使用率,当使用率低于2%时自动执行上述文件移动与目录删除操作
  • 遇到的问题:自行编写的两类监控批处理脚本运行时窗口闪一下即关闭,无法正常工作

尝试的监控脚本示例1

SET ProcessorUsage = wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime | findstr /i /c:RenderQuery
:Loop
IF %ProcessorUsage% LSS 2 (
(for /f "delims=" %%X in ('dir /s/b/ad Proxy') do for /f "delims=" %%Y in ('dir /s/b/a-d "%%X"') do move "%%Y" ".\03. Proxy") && (for /f "delims=" %%i in ('dir /s/b/ad Proxy') do rd "%%i")
) ELSE (
sleep 10 && goto Loop
)

尝试的监控脚本示例2

SET ProcessorUsage = wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime | findstr /i /c:RenderQuery

:Loop
for %ProcessorUsage% LSS 2 do (
(for /f "delims=" %%X in ('dir /s/b/ad Proxy') do for /f "delims=" %%Y in ('dir /s/b/a-d "%%X"') do move "%%Y" ".\03. Proxy") && (for /f "delims=" %%i in ('dir /s/b/ad Proxy') do rd "%%i") || (sleep 10 && goto Loop)
)

可行实现方案

原脚本问题分析

  1. SET命令中变量名与等号之间不能有空格,否则会创建带空格的无效变量
  2. 直接用SET捕获命令输出无效,必须通过for /f解析wmic的输出结果
  3. sleep命令并非Windows原生命令,部分环境无法识别,需替换为timeout
  4. 循环逻辑错误,需每次循环重新获取CPU使用率,而非仅初始化一次

修正后的监控批处理脚本

@echo off
setlocal enabledelayedexpansion

:MonitorLoop
:: 获取RenderQuery进程的CPU使用率,处理wmic格式问题
set "cpu_usage=0"
for /f "skip=1 tokens=2 delims= " %%a in ('wmic path Win32_PerfFormattedData_PerfProc_Process where Name^="RenderQuery" get PercentProcessorTime 2^>nul') do (
    set "cpu_usage=%%a"
)

:: 去除输出中的空格与换行符
for /f "tokens=* delims= " %%a in ("!cpu_usage!") do set "cpu_usage=%%a"

echo 当前RenderQuery进程CPU使用率:!cpu_usage!%%

:: 判断CPU使用率是否低于2%
if !cpu_usage! LSS 2 (
    echo 开始执行文件移动与目录清理...
    :: 确保目标目录存在
    if not exist ".\03. Proxy" mkdir ".\03. Proxy"
    :: 递归移动文件并删除空目录
    for /f "delims=" %%X in ('dir /s/b/ad Proxy') do (
        for /f "delims=" %%Y in ('dir /s/b/a-d "%%X\*.*"') do (
            move "%%Y" ".\03. Proxy\"
        )
        rd "%%X"
    )
    echo 操作完成,退出监控
    goto :EOF
) else (
    echo CPU使用率高于2%,10秒后重新检查...
    timeout /t 10 /nobreak >nul
    goto MonitorLoop
)
endlocal

使用说明

  1. 将上述脚本保存为MonitorRender.bat
  2. 在启动FFBatch的批处理脚本末尾添加调用命令:start "" "MonitorRender.bat",监控脚本会在独立窗口运行,不阻塞FFBatch执行
  3. 确认RenderQuery是FFBatch渲染时的正确进程名,可通过任务管理器核实

内容的提问来源于stack exchange,提问作者Tyrone Hirt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:20:33