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

基于环境温度的戴尔R710风扇控制Windows批处理脚本开发咨询

前置修正

在写判断逻辑前需要先修复你现有代码的2个问题:

  1. 变量赋值错误:你当前代码里的CALL SET Temp_Current = %Temp_Current[5]%等号两侧有多余空格,会导致变量名实际为Temp_Current (末尾带空格)无法正常读取,需要修改为:
CALL SET Temp_Current=%Temp_Current[5]%
  1. 原有逻辑错误:你写的If "%temp%" >= 20 or "%temp%" <= 24存在逻辑问题,该条件会匹配所有温度值,实际需要的是温度在20~24区间(大于等于20且小于等于24),批处理没有原生or/and关键字,需要通过嵌套if实现多条件判断。
  2. 判断顺序调整:要从极端值开始判断,避免低优先级条件提前触发,比如低于5℃的判断要放在低于20℃之前,高于50℃的判断放在最前。

完整阈值判断实现代码

REM 强制转换为数值类型,避免读取异常导致逻辑错误
SET /A Temp_Current=%Temp_Current%
IF %Temp_Current% EQU 0 (
    ECHO 温度读取异常,请检查IPMITool连接状态
    GOTO END
)

REM 阈值判断逻辑
IF %Temp_Current% GTR 50 (
    ECHO The AC is Broken - Call an Engineer and power down the server !
    REM 此处可替换为实际的服务器关机、告警触发指令
    GOTO END
)

IF %Temp_Current% GTR 30 (
    ECHO Turn the AC Up to MAX - its getting toasty in here 
    REM 此处可替换为AC调至最大功率的控制指令
    GOTO END
)

IF %Temp_Current% GTR 25 (
    ECHO Turn the AC On.
    REM 此处可替换为开启AC的控制指令
    GOTO END
)

REM 20-24℃区间判断,嵌套if实现"且"逻辑
IF %Temp_Current% GEQ 20 IF %Temp_Current% LEQ 24 (
    ECHO Turn the AC and Heating Off - save energy and the planet
    REM 此处可替换为关闭AC、加热设备的控制指令
    GOTO END
)

REM 低于5℃优先级高于低于20℃
IF %Temp_Current% LSS 5 (
    ECHO Call the engineer to fix the heating - its almost freezing in here !
    REM 此处可替换为加热故障告警指令
    GOTO END
)

IF %Temp_Current% LSS 20 (
    ECHO Turn the heating on - its getting cold in here and close the door !
    REM 此处可替换为开启加热设备的控制指令
    GOTO END
)

:END
REM 此处可添加后续日志输出、资源清理逻辑

补充说明

Windows批处理数值比较需使用固定运算符:GTR(大于)、GEQ(大于等于)、LSS(小于)、LEQ(小于等于)、EQU(等于),不能直接使用>、<等符号,否则会被系统识别为重定向符导致逻辑错误。

内容的提问来源于stack exchange,提问作者A New Home

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:27:03