首页 > 知识 > 正文

多显示器下怎么用命令行截图指定屏幕

2026-10-24 22:48:29 · 韬光敛彩网 · 热点 · 阅读 760

很多人第一次在多显示器环境里用命令行截图,多显定屏都会遇到同一个问题:命令跑完了,示器截出来的下用行截却是整个桌面,或者只截到了主屏,命令幕想指定的多显定屏那块副屏要么黑屏、要么内容错位。示器尤其是下用行截写自动化脚本、定时抓屏、命令幕远程排查时,多显定屏这种“截错屏”会直接让流程失效。示器本文就围绕“多显示器下怎么用命令行截图指定屏幕”这个具体需求,下用行截把屏幕编号、命令幕区域坐标和常见工具的多显定屏选择讲清楚,并给出可复用的示器排查思路。

需要先说明一个前提:不同系统对多显示器的下用行截编号方式并不统一,同一台机器在系统设置、截图工具、脚本语言里看到的“第 2 块屏”可能对应不同编号。所以下面给出的路径和参数以你本机实际显示为准,涉及系统设置的地方,以当地官方或系统界面显示为准。

先搞清楚屏幕编号和坐标,再谈命令

命令行截图指定屏幕,本质是两件事:选对显示器,选对区域。选显示器靠的是“设备编号”或“虚拟桌面坐标”,选区域靠的是“起点 + 宽高”。如果你连哪块屏是 1、哪块屏是 2 都没确认,后面参数怎么调都是碰运气。

在 Windows 上,可以打开“设置 → 系统 → 显示”,点“标识”按钮,屏幕上会显示 1、2 这样的数字,这就是系统层面的显示器编号。更稳妥的方式是用命令行读取枚举信息,例如 PowerShell 中可以通过 .NET 的屏幕接口遍历所有显示器,输出设备名、边界坐标和是否为主屏。把这块信息打印出来,比凭感觉猜编号可靠得多。

在 macOS 上,可以打开“系统设置 → 显示器”,拖动排列图标时能看到相对位置。命令行侧常用的是系统自带的 screencapture,它支持按屏幕索引或按坐标区域抓取,但索引顺序与“显示器”面板里的排列顺序不一定完全一致,建议先用一次全屏抓取,再对照分辨率确认哪块是目标屏。

在 Linux(X11 环境)上,xrandr 是查看显示器名称和坐标的常用入口,输出里会列出类似 HDMI-1、DP-2 这样的接口名以及各自的几何位置。Wayland 环境下工具差异较大,部分截图工具对多屏支持有限,遇到取不到指定屏的情况,属于环境限制,需要换用支持该协议的工具或退回 X11 会话验证。

按屏幕索引截取指定屏幕的常用做法

确认编号之后,优先用“按屏幕索引”的方式,而不是硬编码坐标。索引方式的好处是:显示器分辨率变了、主副屏换了位置,参数不用大改。下面按系统分别说。

  • macOS:系统自带的 screencapture 支持指定屏幕。常见写法是加 -D 参数后跟屏幕编号,例如 screencapture -D 2 shot.png,表示抓取第 2 块屏幕。如果只想抓某块屏的局部,可以配合 -R x,y,w,h 指定矩形区域,坐标以该屏左上角为参考时更直观。执行前建议先跑一次不带参数的 screencapture,确认编号对应关系。
  • Windows:系统没有自带一条“按屏号截图”的命令,通常借助 PowerShell 调用 .NET 的 Graphics 接口,或使用支持多屏的第三方命令行截图工具。思路是:先枚举所有屏幕拿到目标屏的边界矩形,再按该矩形执行 CopyFromScreen 并保存。如果工具本身只提供“全屏”选项,就需要自己用坐标裁切,先截全桌面再按目标屏的 X、Y、宽、高裁剪。
  • Linux:在 X11 下,import(ImageMagick)、scrot、maim 等工具较常用。以 maim 为例,可以用 -g 指定几何区域,例如 maim -g 1920x1080+1920+0 out.png,其中 +1920+0 表示从主屏右侧开始,正好对应第二块屏。屏幕坐标直接用 xrandr 的输出抄下来即可。
  • 可以看到,macOS 有原生按屏号参数,Windows 和 Linux 更多依赖“坐标区域”来实现指定屏幕。所以关键词里的“指定屏幕”,在多数场景下最终都会落到“指定矩形区域”上。

    坐标截屏的核对清单与失败分支

    坐标方式最容易出错的地方是坐标系原点和缩放。多显示器拼接后,整个虚拟桌面的原点不一定在左下或左上,不同工具对 Y 轴方向的定义也可能相反。下面这份清单建议在正式写进脚本前逐条过一遍。

  • 先用全屏截图确认总分辨率,判断虚拟桌面是横向拼接还是纵向拼接。
  • 用系统显示设置或 xrandr 记录每块屏的起点坐标,注意负坐标(副屏在主屏左侧时很常见)。
  • 检查系统缩放比例。Windows 在 125%、150% 缩放下,逻辑坐标与物理像素不一致,截出来的区域会偏移或被拉伸。
  • 确认工具是否包含鼠标指针、是否受多屏 DPI 感知影响,这两项会让结果与预期差出一截。
  • 保存后立刻打开图片核对内容,不要只看命令是否报错。
  • 如果截出来是黑屏,常见原因是目标屏处于休眠、被独占全屏程序占用,或工具没有正确的屏幕捕获权限(macOS 需要在“隐私与安全性 → 屏幕录制”里授权对应终端程序)。如果截出来是整屏而非指定屏,多半是区域参数没生效或被默认值覆盖。如果内容错位,优先怀疑缩放和坐标系方向,而不是工具本身有 bug。

    还有个容易被忽略的点:把命令写进定时任务或远程会话时,运行环境的显示上下文可能和你手动执行时不同。远程桌面断开后,某些系统的虚拟显示器会变化,导致原本正确的编号和坐标失效。这类情况下,建议在脚本里加入运行时枚举显示器的步骤,动态取目标屏的边界,而不是写死数字。

    小结一下可执行的顺序:先用系统设置或命令确认每块屏的编号与坐标,再优先选择支持按屏索引的工具;只能按坐标截取时,把缩放和坐标系方向核对清楚,并在脚本里动态获取屏幕边界而不是硬编码。最后一定用实际图片验证结果,遇到黑屏先查权限和休眠,遇到错位先查缩放。这样在多显示器下用命令行截图指定屏幕,基本就能稳定复现,不再靠反复试参数。