无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 7045|回复: 20
打印 上一主题 下一主题

[已解决] 获取仍在连接的最大显示器的分辨率(单、多显示器通用)

[复制链接]
1#
发表于 2016-12-10 17:55:22 | 显示全部楼层
虽然我对楼主说的还是有些迷迷糊糊的,也没有楼主的条件(多显示器)。但楼主说的第二个方法里的有些过程是可以通过批处理实现的。
1.数学计算:
set /A (数学表达式)



2.进行数字比较。
if /I 表达式 命令






点评

你就把我公布的注册表内容当成一个txt文本来,你怎么计算呢?  详情 回复 发表于 2016-12-10 21:10
回复

使用道具 举报

2#
发表于 2016-12-10 22:30:29 | 显示全部楼层
本帖最后由 不知 于 2016-12-10 22:33 编辑
houxiren 发表于 2016-12-10 21:10
你就把我公布的注册表内容当成一个txt文本来,你怎么计算呢?

由于方便计算,我把第一个值改为了00000001
reg.txt的内容:

计算.cmd的内容:
@echo off
setlocal DISABLEDELAYEDEXPANSION
SET ret=1
for /f "skip=1 tokens=1,2 delims=: " %%i in (reg.txt) do call :run %%j
echo 计算的结果是%ret%
if /I %ret% EQU 0 echo 计算值等于0
pause
exit

rem 以下代码需放到末尾
:run
echo %1
set /A temp = 0x%1
echo %temp%
set /A  ret *= 0x%1

结果:

未修改为0时的结果:

文件:
计算.7z (608 Bytes, 下载次数: 3)


点评

太感谢您了。问题还没解决,是我表述不清,已重新写了情况及要求,期盼您再看一下,谢谢。  详情 回复 发表于 2016-12-11 08:52
回复

使用道具 举报

3#
发表于 2016-12-11 12:45:16 | 显示全部楼层
重新写了一下批出理。
内容:
@echo off
set ret1=0
set ret2=0
set defX=1
set tempA=0
set tempX=0
set tempY=0
for /f "skip=1 tokens=1,2 delims=:" %%i in ('type v.reg') do call :run "%%i" %%j
echo  %key% X= %X% Y= %Y%
pause
exit
:run
set temp=%1
set temp1=%2

if %ret1% GTR %ret2% (
set /a X= 0x%tempX%
set /a Y= 0x%tempY%
set key=%tempkey%
set ret2=%ret1%
)
if "%temp:~2,4%"=="HKEY" set tempkey=%temp:~2,131%
if "%temp:~2,16%"=="Attach.ToDesktop" set tempA=%temp1%
if "%temp:~19,1%"=="R" (
if %defX%==1 (
set tempX=%temp1%
set defX=2
)
if %defX%==2 (
set tempY=%temp1%
set defX=3
)
)
if "%temp:~19,1%"=="R" (
if %defX%==4 (
set /A ret1 = 0x%tempA% * 0x%tempX% * 0x%tempY%
rem echo %tempX% %tempY%
set defX=1
)
if %defX%==3 set defX=4
)
结果:

试验文件:
计算.7z (1.11 KB, 下载次数: 13)


点评

太感谢了。完美解决问题。谢谢您。 另,不仅是问题解决得完美,而解决时,还带贴出代码,更附有试验文件,让我以及对此问题也有兴趣的坛友可以更快速直观的学习。 谢谢!!!!!!!!!!!!  详情 回复 发表于 2016-12-11 16:41
回复

使用道具 举报

4#
发表于 2016-12-12 12:42:03 | 显示全部楼层
houxiren 发表于 2016-12-12 10:34
太感谢您的回复了。你的代码也能完美实现目的。

您的代码的思路,对于我的另一个目的有关联。还想请 ...

批处理内容:
@echo off
set root=.\Extensions

rem 目录遍历
for /f %%i in ('dir /A:D /B "%root%"') do (
if exist "%root%\%%i\_locales" call :del  "%root%\%%i\_locales"
)

goto :EOF

:del
for /f %%i in ('dir /A:D /B %1') do (
if /I not %%i==ZH_CN if /I not %%i==en  if /I not %%i==en_GB rd /s /q %1\%%i
if exist %1\en if exist %1\en_GB rd /s /q %1\en_GB
)

pause
测试文件:
test.7z (537 Bytes, 下载次数: 1)

点评

少遍历了一级,下午改。  详情 回复 发表于 2016-12-12 13:15
我上传个测试文件,您再帮忙看一下。谢谢  详情 回复 发表于 2016-12-12 13:15
回复

使用道具 举报

5#
发表于 2016-12-12 13:15:52 来自手机 | 显示全部楼层
不知 发表于 2016-12-12 12:42
批处理内容:
@echo off
set root=.\Extensions

少遍历了一级,下午改。
回复

使用道具 举报

6#
发表于 2016-12-12 17:13:49 | 显示全部楼层
houxiren 发表于 2016-12-12 13:15
我上传个测试文件,您再帮忙看一下。谢谢

修改了一下,支持多级目录遍历。
内容:
@echo off
set root=%CD%
call :find "%CD%"
rem 目录遍历
:find
CD %1
for /f "delims=/" %%i in ('dir /A:D /B') do (
if exist "%%i\_locales" call :del  "%%i\_locales"
if  not exist "%%i\_locales"  call :find "%%i"
)

if not "%root%"=="%CD%" CD ..
if "%root%"=="%CD%" pause && exit
goto :EOF

:del
for /f %%i in ('dir /A:D /B %1') do (
if /I not %%i==ZH_CN if /I not %%i==en  if /I not %%i==en_GB rd /s /q %1\%%i
if exist %1\en if exist %1\en_GB rd /s /q %1\en_GB
)
echo cleaning %CD%\%1

文件:
clean.7z (31.55 KB, 下载次数: 7)

点评

谢谢不知先生,完美解决。  详情 回复 发表于 2016-12-13 08:51
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-3 08:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表