查看: 1522|回复: 5
收起左侧

[其他] 怎样才能使这个批处理弹出的窗口居中?谢谢

[复制链接]
yyz219
头像被屏蔽
发表于 2022-1-10 11:05:09 | 显示全部楼层 |阅读模式
本帖最后由 yyz219 于 2022-1-10 11:18 编辑

怎样才能使这个批处理弹出的窗口居中?谢谢
+++++++++++++++++++++++++++++
需要窗口居中.bat:
@echo off
Title Notepad3替換系统记事本
::界面大小,Cols为宽,Lines为高
mode con cols=45 lines=10
color 2F
pause>nul
cnseatech
发表于 2022-1-10 12:04:35 | 显示全部楼层
是不是要获取分辨率啊
yyz219
头像被屏蔽
 楼主| 发表于 2022-1-10 12:13:29 | 显示全部楼层
cnseatech 发表于 2022-1-10 12:04
是不是要获取分辨率啊

我不晓得。
Chatter-X
发表于 2022-1-10 12:21:22 | 显示全部楼层
【方案一】比较原始的方法,思路比较容易理解。
  1. @echo  off
  2. ::Batcher@bbs.bathome.net
  3. ::2009-03-04
  4. ::命令行窗口自动居中之批处理版@CMD@XP
  5. ::http://bbs.bathome.net/thread-3582-1-1.html

  6. setlocal enabledelayedexpansion
  7. ::指定命令行窗口字体大小(默认是8*16)
  8. set FontWidth=8
  9. set FontHeight=16
  10. ::指定命令行窗口大小(默认是80*25)
  11. set WinCol=80
  12. set WinRow=25

  13. ::ClearOldConf
  14. for /f "tokens=3 delims=" %%a in ('reg query HKEY_CURRENT_USER\Console^|findstr "_system32_cmd.exe"') do (
  15.   if "%%a" neq "" (
  16.     reg delete HKEY_CURRENT_USER\Console\%%a /va /f
  17.   )
  18. )

  19. ::SetFontSize
  20. call :Dec2Hex %FontWidth% FontWidthH
  21. call :Dec2Hex %FontHeight% FontHeightH
  22. set FontWidthH=0000%FontWidthH%
  23. set FontWidthH=%FontWidthH:~-4%
  24. reg add HKEY_CURRENT_USER\Console /v FontSize /t reg_dword /d 0x%FontHeightH%%FontWidthH% /f

  25. ::SetWinSize
  26. call :Dec2Hex %WinCol% WinColH
  27. call :Dec2Hex %WinRow% WinRowtH
  28. set WinColH=0000%WinColH%
  29. set WinColH=%WinColH:~-4%
  30. reg add HKEY_CURRENT_USER\Console /v WindowSize /t reg_dword /d 0x%WinRowtH%%WinColH% /f

  31. ::GetWinSize
  32. set /a WinWidth=WinCol*FontWidth+33
  33. set /a WinHeight=WinRow*FontHeight+45

  34. ::GetSrcSize
  35. for /f "tokens=2 delims==" %%a in ('wmic desktopmonitor get screenwidth /value') do (
  36.   set ScrWidth=%%a
  37.   goto :GetSrcHeight
  38. )
  39. :GetSrcHeight
  40. for /f "tokens=2 delims==" %%a in ('wmic desktopmonitor get screenheight /value') do (
  41.   set ScrHeight=%%a
  42.   goto :GetPosition
  43. )

  44. :GetPosition
  45. set /a PosLeft=(ScrWidth-WinWidth)/2
  46. set /a PosTop=(ScrHeight-WinHeight)/2
  47. call :Dec2Hex %PosLeft% PosLeftH
  48. call :Dec2Hex %PosTop% PosTopH
  49. set PosLeftH=0000%PosLeftH%
  50. set PosLeftH=%PosLeftH:~-4%
  51. set PosTopH=0000%PosTopH%
  52. set PosTopH=%PosTopH:~-4%
  53. reg add HKEY_CURRENT_USER\Console /v WindowPosition /t reg_dword /d 0x%PosTopH%%PosLeftH% /f
  54. start cmd
  55. goto :eof

  56. :Dec2Hex
  57. set num=%1
  58. set str=0123456789ABCDEF
  59. set numDiv=%num%
  60. set numConn=
  61. :LoopD2H
  62. set /a numMod=numDiv%%16
  63. set numMod=!str:~%numMod%,1!
  64. set /a numDiv/=16
  65. set numConn=%numMod%%numConn%
  66. if %numDiv% equ 0 (
  67.   set %2=%numConn%
  68.   goto :eof
  69. )
  70. goto :LoopD2H
复制代码



【方案二】采用18楼pusofalse兄的方法:移位+或,可以缩短代码、提高执行效率。
  1. @echo off
  2. ::Batcher@bbs.bathome.net
  3. ::2009-03-17
  4. ::命令行窗口自动居中之批处理版@CMD@XP
  5. ::http://bbs.bathome.net/thread-3582-1-1.html

  6. setlocal enabledelayedexpansion
  7. ::指定命令行窗口字体大小(默认是8*16)
  8. set FontWidth=8
  9. set FontHeight=16
  10. ::指定命令行窗口大小(默认是80*25)
  11. set WinCol=80
  12. set WinRow=25

  13. ::SetFontSize
  14. set /a "FontSizeD=FontHeight<<16|FontWidth"
  15. call :Dec2Hex %FontSizeD% FontSizeH
  16. reg add HKEY_CURRENT_USER\Console /v FontSize /t reg_dword /d 0x%FontSizeH% /f

  17. ::SetWinSize
  18. set /a "WinSizeD=WinRow<<16|WinCol"
  19. call :Dec2Hex %WinSizeD% WinSizeH
  20. reg add HKEY_CURRENT_USER\Console /v WindowSize /t reg_dword /d 0x%WinSizeH% /f

  21. ::GetWinSize
  22. set /a WinWidth=WinCol*FontWidth+33
  23. set /a WinHeight=WinRow*FontHeight+45

  24. ::GetSrcSize
  25. for /f "tokens=2 delims==" %%a in ('wmic desktopmonitor get screenwidth /value') do (
  26.   set ScrWidth=%%a
  27.   goto :GetSrcHeight
  28. )
  29. :GetSrcHeight
  30. for /f "tokens=2 delims==" %%a in ('wmic desktopmonitor get screenheight /value') do (
  31.   set ScrHeight=%%a
  32.   goto :GetPosition
  33. )

  34. :GetPosition
  35. set /a PosLeft=(ScrWidth-WinWidth)/2
  36. set /a PosTop=(ScrHeight-WinHeight)/2
  37. echo %PosLeft% %PosTop%
  38. set /a "PosD=PosTop<<16|PosLeft"
  39. call :Dec2Hex %PosD% PosH
  40. reg add HKEY_CURRENT_USER\Console /v WindowPosition /t reg_dword /d 0x%PosH% /f
  41. start cmd
  42. goto :eof

  43. :Dec2Hex
  44. set num=%1
  45. set str=0123456789ABCDEF
  46. set numDiv=%num%
  47. set numConn=
  48. :LoopD2H
  49. set /a numMod=numDiv%%16
  50. set numMod=!str:~%numMod%,1!
  51. set /a numDiv/=16
  52. set numConn=%numMod%%numConn%
  53. if %numDiv% equ 0 (
  54.   set %2=%numConn%
  55.   goto :eof
  56. )
  57. goto :LoopD2H
复制代码


来源于:http://bbs.bathome.net/thread-3582-1-1.html

评分

参与人数 1人气 +3 收起 理由
yyz219 + 3 我需要的是仅对这个批处理的

查看全部评分

yyz219
头像被屏蔽
 楼主| 发表于 2022-1-10 12:31:10 | 显示全部楼层
Chatter-X 发表于 2022-1-10 12:21
【方案一】比较原始的方法,思路比较容易理解。

我试一试先。谢谢!
yyz219
头像被屏蔽
 楼主| 发表于 2022-1-10 12:33:57 | 显示全部楼层
Chatter-X 发表于 2022-1-10 12:21
【方案一】比较原始的方法,思路比较容易理解。

这个好像是设置整体的。

我需要的是仅仅这个批处理的
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-24 07:17 , Processed in 0.137797 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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