将cmd命令中的值传递给bat变量

时间:2017-12-18 15:28:13

标签: windows batch-file cmd

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

正在运行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
)

以下是相关的蝙蝠部分:

self.timers_frame.columnconfigure(0, weight=1)

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分: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

Space 上执行命令(单引号)标记,选择第一个和第二个标记。如果第一个标记与Gpu完全匹配,则将第二个标记分配给变量。

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

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