2016-01-20 5 views
1

Я недавно начал погружение в запись пакетных файлов, и у меня есть вопрос. Я пытаюсь создать файл, который проверяет, подключен ли мой дополнительный монитор, и если он переключает основной дисплей на вторичный экран. (Да, я знаю об окнах + P ярлыке) ...Как обнаружить несколько мониторов в пакетном файле

До сих пор я понял, что «DisplaySwitch.exe/external» устанавливает дисплей по умолчанию на вторичный монитор, но я не могу узнать, как определить, дисплей будет первым.

-Cheers, Люк

ответ

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 

это напечатает разрешения всех мониторов.

Update:

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 
+0

Хорошо, поэтому это создает файл со всеми спецификациями моего компьютера ... Я спрашиваю, как сделать партию файл, который проверяет, подключен ли мой дополнительный монитор, чем вторичный монитор основного монитора. Я пропустил вашу мысль? –

+0

@LukeRector - проверьте мое обновление. Он печатает сообщение, если имеется более одного монитора. – npocmaka

0

@ ответ 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 
Смежные вопросы