我最近开始潜入编写批处理文件,我有一个问题。我试图创建一个文件来检查我的辅助监视器是否已连接,以及是否将主显示器切换到辅助屏幕。 (是的我知道windows + P的快捷方式)......
到目前为止,我已经发现" DisplaySwitch.exe / external"将默认显示设置为辅助监视器,但我无法找到如何检测显示器是否在那里。
-Cheers,Luke
答案 0 :(得分:1)
一种可能的方法是使用dxdiag虽然它不是最快的方式:
@echo off
del ~.txt /q /f >nul 2>nul
dxdiag /t ~
w32tm /stripchart /computer:localhost /period:1 /dataonly /samples:3 >nul 2>&1
setlocal enableDelayedExpansion
set currmon=1
for /f "tokens=2 delims=:" %%a in ('find "Current Mode:" ~.txt') do (
echo Monitor !currmon! : %%a
set /a currmon=currmon+1
)
endlocal
del ~.txt /q /f >nul 2>nul
这将打印所有监视器的分辨率。
<强>更新强>:
dxdiag打印有关所有监视器的信息,以便您可以检查是否有多个监视器:
@echo off
del ~.txt /q /f >nul 2>nul
start "" /w dxdiag /t ~
for /f "tokens=1* delims=:" %%a in ('find /c "Current Mode:" "~.txt"') do (
set /a "number_of_monitors=%%b"
rem echo #%%b#
)
rem exit /b 0
echo %number_of_monitors%
rem :---- if it needed -----:
if defined number_of_monitors ( if %number_of_monitors% GTR 1 ( echo second monitor connected ) else (echo only one monitor connected ))
del ~.txt /q /f >nul 2>nul
答案 1 :(得分:1)
@ npocmaka的回答并不适合我,但他的代码的这种变化(Windows 10):
rem @echo off
del %TEMP%\dxdiag.txt /q /f >nul 2>nul
start "" /w dxdiag -64bit -t %TEMP%\dxdiag.txt
for /f "tokens=3" %%f in ('find /c"Monitor Name:" %TEMP%\dxdiag.txt') do set MONITOR_COUNT=%%f
if defined MONITOR_COUNT ( if %MONITOR_COUNT% GTR 1 ( echo second monitor connected ) else (echo only one monitor connected ))
del %TEMP%\monitors.txt /q /f >nul 2>nul
答案 2 :(得分:0)
在Windows 10中,可能仅是调用:
wmic desktopmonitor get DeviceID
输出:
DeviceID
DesktopMonitor1
DesktopMonitor2
有关使用监控的更多详细信息:
wmic desktopmonitor get
答案 3 :(得分:0)
SET monitors=monitors.txt
SET nMons=0
MultiMonitorTool.exe /scomma "%monitors%"
FOR /F "skip=1 tokens=9 delims=," %%a IN (%monitors%) DO IF %%a GTR 0 SET /A nMons += 1
echo Number of monitors: %nMons%