将从cmd命令派生的值分配给bat变量

问题描述 投票:0回答:1

我是批处理脚本的新手,遇到了一个问题。我正在运行一个命令来获取GPU利用率,我想将其子串,以便我可以将利用率作为整数使用。

运行nvidia-smi -q -d UTILIZATION给我这个输出:

GPU 00000000:01:00.0
    Utilization
        Gpu                         : 100 %
        Memory                      : 0 %
        Encoder                     : 0 %
        Decoder                     : 0 %

这是相关的蝙蝠部分:

:checkGPUUtil
cd nvsmiPath
goto :loop
timeout 1
goto :start

:loop

if %tries% leq 3 (
    set /a tries +=1
    sleep 10
    goto :loop
)

所以我要找的是复制GPU列中显示的值,当前为100并将其分配给整数。

我怎样才能做到这一点?

windows batch-file cmd
1个回答
1
投票
for %%a in (gpu1 gpu2) do set "%%a="
for /f "tokens=1,2delims=: " %%a in ('nvidia-smi -q -d UTILIZATION'
 ) do if "%%a"=="Gpu" if defined gpu1 (set /a gpu2=%%b) else (set /a gpu1=%%b)

echo GPU : %gpu1% and %gpu2%
set gpu

执行命令(单引号)标记为:和空格,选择第一个和第二个标记。如果第一个标记与qazxsw poi完全匹配,则将第二个标记分配给变量。

请参阅提示中的Gpu(或SO上的示例)以获取文档。

[修改为2 gpus - 在原始问题中提及此信息会使任务更容易。]

© www.soinside.com 2019 - 2024. All rights reserved.