Windows 解析WMIC输出

Windows 解析WMIC输出,windows,parsing,batch-file,output,Windows,Parsing,Batch File,Output,我有一个BAT脚本,用来读取变量的当前屏幕分辨率。我使用wmic desktopmonitor get screenwidth/value命令获得屏幕分辨率(对于宽度,高度是相同的) 示例输出: C:\Users\Pietu1998>wmic desktopmonitor get screenwidth /value ScreenWidth=1920 ScreenWidth= C:\Users\Pietu1998> 我有两个显示器,所以它只显示正在使用的显示器的分辨

我有一个BAT脚本,用来读取变量的当前屏幕分辨率。我使用
wmic desktopmonitor get screenwidth/value
命令获得屏幕分辨率(对于宽度,高度是相同的)

示例输出:

C:\Users\Pietu1998>wmic desktopmonitor get screenwidth /value


ScreenWidth=1920


ScreenWidth=




C:\Users\Pietu1998>
我有两个显示器,所以它只显示正在使用的显示器的分辨率

我尝试使用
for
循环跳过前两行空行,然后读取数据

set screenwidth=

for /F "skip=2 tokens=*" %%F in ('wmic desktopmonitor get screenwidth /value') do (
    if "%screenwidth%" equ "" (
        echo line: %%F
        set screenwidth=%%F
        echo var: %screenwidth%
        set screenwidth=%screenwidth:~12%
    )
)
我得到的输出是正确的,因为行是由第一个
echo
打印的,但由于某种原因,第二个
echo
没有输出任何内容。该行未放入变量中

我错过了什么?我已经在谷歌上搜索了两个小时了

更新:我找到了一种使用
findstr
和临时文件的方法

wmic desktopmonitor get screenwidth /value | findstr "ScreenWidth=." > %temp%\tmp
set /P screenwidth=< %temp%\tmp
del %temp%\tmp
wmic desktopmonitor获取屏幕宽度/值| findstr“屏幕宽度=。”>%temp%\tmp
设置/P屏幕宽度=<%temp%\tmp
删除%temp%\tmp

echo变量:%screenwidth%
否,
screenwidth
正被设置为
%%F
(字面意思)。这里不这样做。您是否按图示粘贴了它?
@echo off
set "screenwidth="
for /F "tokens=2 delims==" %%F in ('wmic desktopmonitor get screenwidth /value') do (
    if not defined screenwidth set screenwidth=%%F
)
pause