我如何监控小于或大于(值)的数字列表并在该值在范围内时执行操作?

how can i monitor a list of numbers with a less or more than (value) and perform action if the value is in range?

我正在尝试编写一个 win 10 批处理脚本,它监视 csv 中数字的输出,5 行,如 111.07 112.56 123.66 等。输出每 60 秒发生一次。 (可选地,我可以将其存储在 log.txt 中并在脚本中调用它) 此外,我希望输出数字的绝对值不带小数。 然后执行小于或等于或大于...(LEQ 100GEQ 140 -> 对吗?)。 Ifthen 范围内立即重启 shutdown -r -f -t 00 否则再次 go to :start

我不得不承认我不知道我在做什么,我尝试的一切都立即退出脚本,即使在每一步后暂停或超时也是如此。

编辑:这是我目前所拥有的。

:start
FOR /F "tokens=* USEBACKQ" %%i IN ('nvidia-smi.exe --format=csv,nounits,noheader --query-gpu=power.draw') do (SET var=%%i%)
echo %%var%
if %%var% LEQ 100 (echo reboot) else (goto :start)
If %%var% GEQ 140 (echo reboot) else (goo :start) 

第一行应将 (‘nvidia-Smi.exe ….‘) 的 5 条输出行存储在变量 var.

Nvidia 的输出-smi.exe:

117.00
123.34
116.77
128.65
119.45

第二个应该进行 if else 比较并重新启动(现在只是 echo)我不明白如何将 if else 构建到 for 循环中。 Nvidia-smi.exe 似乎没有被执行而只是被打印出来,但是当我 运行 命令在 cmd 中它执行。 cvs,Mounties,noheader 之间的逗号被删除 我也不明白如何在 if leq 中不重复自己……否则……

输出:

C:\Users\admin\Desktop\monitor.bat

C:\Users\admin>FOR /F "tokens=* USEBACKQ" %i IN ('nvidia-smi.exe --format csv nounits noheader --query-gpu power.draw') do (SET var=%i )

C:\Users\admin>(SET var=nvidia-smi.exe --format csv nounits noheader --query-gpu power.draw )

C:\Users\admin>echo %var
%var
Syntaxerror.

C:\Users\admin>    if %varstart)

感谢@Mofi,

通过你的示范,我成功了。

:begin
@echo off
Timeout 57
if exist log.txt del log.txt 
nvidia-smi.exe --format=csv,nounits,noheader --query-gpu=power.limit --filename=log.txt
for /F "tokens=* delims=" %%I in (log.txt) do for %%J in (%%I) do if %%~nJ LEQ 100 (echo %%J is less or equal 100 && shutdown /r /f /t 60) else if %%~nJ GEQ 140 (echo %%J is greater or equal 140 && shutdown /r /f /t 60) else (echo %%J% is between 100 and 140)
goto :begin

输出:

117.00 is between 100 and 140
148.00 is greater or equal 140
126.00 is between 100 and 140
96.00 is Less or equal 100
127.00 is between 100 and 140