Windows 解析WMIC输出
我有一个BAT脚本,用来读取变量的当前屏幕分辨率。我使用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> 我有两个显示器,所以它只显示正在使用的显示器的分辨
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