답변:
이 시도:
wmic desktopmonitor get screenheight, screenwidth
Cygwin 내에서 :
cmd /c wmic desktopmonitor get screenheight, screenwidth
출력을 사용하기 위해 어떤 트릭을 사용 해야하는지 잘 모르겠습니다. 아마도 임시 텍스트 파일입니까?
dxdiag를 사용 하면 가장 빠른 방법은 아닙니다.
@echo off
del ~.txt /q /f >nul 2>nul
start "" /w dxdiag /t ~
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
모든 모니터의 해상도를 인쇄합니다.
편집 . 허용 된 답변은 WMIC를 사용합니다. ( wmic desktopmonitor get screenheight, screenwidth /format:value
) .This는 windows8 / 8.1 / 10에서 작동하지 않습니다. 최신 Windows 버전의 경우 다음을 사용할 수 있습니다.
wmic path Win32_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value
Windows 버전을 확인한 다음 wmic으로 해상도를 얻는 스크립트 :
@echo off
setlocal
for /f "tokens=4,5 delims=. " %%a in ('ver') do set "version=%%a%%b"
if version lss 62 (
::set "wmic_query=wmic desktopmonitor get screenheight, screenwidth /format:value"
for /f "tokens=* delims=" %%@ in ('wmic desktopmonitor get screenwidth /format:value') do (
for /f "tokens=2 delims==" %%# in ("%%@") do set "x=%%#"
)
for /f "tokens=* delims=" %%@ in ('wmic desktopmonitor get screenheight /format:value') do (
for /f "tokens=2 delims==" %%# in ("%%@") do set "y=%%#"
)
) else (
::wmic path Win32_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value
for /f "tokens=* delims=" %%@ in ('wmic path Win32_VideoController get CurrentHorizontalResolution /format:value') do (
for /f "tokens=2 delims==" %%# in ("%%@") do set "x=%%#"
)
for /f "tokens=* delims=" %%@ in ('wmic path Win32_VideoController get CurrentVerticalResolution /format:value') do (
for /f "tokens=2 delims==" %%# in ("%%@") do set "y=%%#"
)
)
echo Resolution %x%x%y%
endlocal
@paradroid 감사합니다 :) WMIC를 사용하여 Batch Script를 원격 데스크톱에 작성했지만 전체 화면은 아니지만 여전히 편리합니다. ^ _ ^
@echo off
:p00
setlocal
if "%1"=="" goto :q01
set i01=wmic desktopmonitor
set i01=%i01% where availability^=3
set i01=%i01% get screenHeight,screenWidth
set o01=%temp%\ScrRes.txt
%i01%>"%o01%"
for /f "delims= skip=1" %%o in ('type %o01%') do call :p01 %1 %%o
goto :p99
:p01
set srvnm=%1
set /a tl=%2-40
set /a ll=%3-80
start mstsc /admin /w:%ll% /h:%tl% /v:%srvnm%
goto :eof
:q01
echo.
echo ^>^> Syntax: %0 MachineHostname [enter]
echo.
:p99
if exist "%o01%" del "%o01%" /f /q
echo.
echo ^>^> Sincerely Thank You For Using..
endlocal
goto :eof
자유롭게 탐험하십시오. 열정을 키우고 향상 시키십시오. (와이)
MultiMonitorTool 사용 :
MultiMonitorTool.exe /scomma "%TEMP%\MultiMonitorTool.csv"
그런 다음 "% TEMP % \ MultiMonitorTool.csv"파일을 구문 분석하십시오 (여전히 작업 중입니다)
다중 모니터 설정의 경우 다음 명령을 분할하십시오.
setlocal ENABLEDELAYEDEXPANSION
setlocal ENABLEEXTENSIONS
set wmicheight="wmic desktopmonitor get screenheight /format:value"
set wmicwidth="wmic desktopmonitor get screenwidth /format:value"
:height
for /f "tokens=2 delims==" %%a in ('%wmicheight%') do (
If %%a LEQ 1 (
rem skip if height is not bigger than 1
) Else (
rem take the first height value larger than 1
rem then skip to width
Set /a "height=%%a"
goto :width
)
)
:width
for /f "tokens=2 delims==" %%a in ('%wmicwidth%') do (
If %%a LEQ 1 (
rem skip if width is not bigger than 1
) Else (
rem add width found to get total width of all screens
Set /a "width=width+%%a"
)
)
echo %width% x %height%
가장 간단한 방법 :
@echo off
::By SachaDee 2018
FOR /F "skip=2 delims=" %%a IN ('wmic path Win32_VideoController get VideoModeDescription^,CurrentHorizontalResolution^,CurrentVerticalResolution /format:Value ^| findstr ":"') do set %%a
echo Width =^> %CurrentHorizontalResolution%
echo Height =^> %CurrentVerticalResolution%
echo Description =^> %VideoModeDescription%
/format:Value
결과를 var = value 형식으로 반환 한다는 것을 이해 하고 set
명령에 사용됩니다 . 하나의 값만 원한다면 for 루프 없이이 작업을 수행 할 수 있습니까?
wmic
하려면 올바른 매개 변수를 사용하여 쿼리를 실행하여 값만 표시하면됩니다. for
루프는 여기에 사용되는 set
코드에서 나중에 사용하기 위해 값. 이것이 bat
외부 명령 ( wmic.exe
이 경우) 을 사용하는 유일한 방법 입니다.
set
로모그래퍼 wmic
for 루프없이 결과는?
이것은 내 시도입니다 :
@echo off
Mode 45,3 & color 0A
Title Dislpay Resolution by Hackoo 2018
Set "WMIC_Command=wmic path Win32_VideoController get VideoModeDescription^,CurrentHorizontalResolution^,CurrentVerticalResolution /format:Value"
Set "H=CurrentHorizontalResolution"
Set "V=CurrentVerticalResolution"
Call :GetResolution %H% HorizontalResolution
Call :GetResolution %V% VerticalResolution
echo(
echo Screen Resolution is : %HorizontalResolution% x %VerticalResolution%
pause>nul & Exit
::****************************************************
:GetResolution
FOR /F "tokens=2 delims==" %%I IN (
'%WMIC_Command% ^| find /I "%~1" 2^>^nul'
) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%2=%%A"
Exit /b
::****************************************************