在Windows中从命令行拍摄屏幕截图


51

我正在寻找一种从命令行截取整个屏幕截图的方法。操作系统是Windows。像这样:

C:\>screenshot.exe screen1.png

1
你为什么要做这样的事情?除了明显的缺陷(它只能捕获当前正在使用的命令行的屏幕截图)之外,用于此目的的“常规”解决方案又有什么问题呢?
Rook 2009年

7
为什么限制仅拍摄cmd线?我认为这个问题更多地涉及自动化方面。
Gerd Klima 2009年

好吧,在他要截屏的那一刻,他必须按Enter发出命令,不是吗?他当然可以使用脚本来时间激活它,但是随后他真的在重新发明热水。
Rook

我想编写一个脚本,用于在Thunderbird中打开eml文件,进行屏幕截图,打开另一个文件,进行另一屏幕截图...对于文件夹中的所有文件。我想从命令行执行屏幕截图工具,因此可以将其自动化。只是为了清楚起见,我不想拍摄命令行的屏幕截图,而是整个屏幕。实际上,我已经编写了脚本,我只是在寻找更多选项来截屏。
泽利科菲

2
@Idigias:首先,屏幕大于CMD框,但是其次:当脚本启动GUI工具时,该GUI工具将成为焦点。因此,您的“明显缺陷”并不明显,也没有缺陷。您曾经使用命令行吗?
tvCa

Answers:


26

下载imagemagick。包括许多命令行图像处理工具。 导入使您可以捕获部分或全部屏幕,并将图像保存到文件中。例如,要将整个屏幕另存为jpeg:

import -window root screen.jpeg

如果要使用鼠标在窗口内单击或选择屏幕区域并保存png,请使用:

import box.png

13
这似乎在Windows上不起作用。我收到有关找不到文件的X服务器错误。
Binary Phile 2011年

2
@BinaryPhile是的,我认为这仅适用于在Cygwin上运行的X服务器。
CMCDragonkai 2014年

它仍然对我不起作用。我得到了一个屏幕截图,但是只有X应用程序出现了(如预期的那样)。
reinierpost,2015年

嗯,ImageMagick是25 Mb,并且可以完成很多很棒的工作。下面的screenCapture.bat为9 Kb,它完全按照OP的要求进行操作。为ImageMagick大小的.04%。
johny为什么

41

这个问题已经被回答了,但是我想我也应该把这个问题解决。NirCmd(免费软件,可悲的是,不是开放源代码)可以从命令行获取屏幕截图,以及它可以执行的许多其他功能。

在nircmd.exe的目录中,或者将其复制到system32文件夹中,从命令行运行此命令:

nircmd.exe savescreenshot screen1.png

做你想要的。您也可以像这样延迟它:

nircmd.exe cmdwait 2000 savescreenshot screen1.png

这将等待2000毫秒(2秒),然后捕获并保存屏幕截图。


Nircmd不支持多个屏幕。它将仅捕获主屏幕。
托马斯·韦勒2015年

1
看起来最新版本可以完成多个屏幕。savescreenshotfull [文件名]
w32sh 2016年

我最初找不到nircmd2的下载链接。Google搜索未显示任何内容。对于希望下载的用户nircmd2,下载链接位于nirsoft.net/utils/nircmd.html页面的最底部。您可以直接使用此下载链接:nirsoft.net/utils/nircmd.zip
alpha_989,18年

17

它可以在没有外部工具(您只需要安装.net框架,默认情况下,从vista及更高版本安装的所有版本)-screenCapture.bat的情况下完成。它是一个自编译的C#程序,您可以将输出保存为几种格式,并且仅捕获活动窗口或整个屏幕:

screenCapture- captures the screen or the active window and saves it to a file
Usage:
screenCapture  filename.format [WindowTitle]

filename - the file where the screen capture will be saved
format - Bmp,Emf,Exif,Gif,Icon,Jpeg,Png,Tiff and are supported - default is bmp
WindowTitle - instead of capturing the whole screen will capture the only a window with the given title if there's such

例子:

call screenCapture notepad.jpg "Notepad"
call screenCapture screen.png

2
绝对是最佳解决方案。超小9K!这是ImageMagick(25 Mb)大小的0.04%。它使用内置的Windows功能。比本页上的所有其他解决方案小。最好!
johny为什么

1
我注意到此解决方案的一件事是,它无法捕获某些特定的事物。例如,某些应用程序正在附加自身,并在未在捕获的图像中呈现的其他应用程序上创建集线器。在那些极端情况下,我发现MiniCap可以工作。但是,在大多数情况下,这里的解决方案是最快,最简单的解决方案。
F1234k 2016年

@npocmaka,您好,我有两个显示器可以在其上扩展桌面。我想拍摄第二台显示器的桌面截图。但是您的程序只是从主桌面获取屏幕截图。有招吗
迷你

@mini-您可以使用this编辑脚本的c#部分 。我将尝试在周末添加添加
npocmaka

@npocmaka,由于我不熟悉C#,因此我将等待您的更新。非常感谢。
迷你

13

其他建议也很好-您也可以尝试使用MiniCap,它是免费的,并具有其他一些功能,例如灵活的文件命名和一些不同的捕获模式:http : //www.donationcoder.com/Software/Mouser/MiniCap/index.html

(免责声明:我是MiniCap的作者)。


1
然后,您还必须是Screenshot Captor的作者。我发现它是满足我需求的更好解决方案。谢谢!
jon3laze 2012年

1
它是免费的,仅供个人使用。对于商业用途,需要Screenshot Captor的许可证。
托马斯·韦勒2015年

9

试试IrfanView

您可以通过命令行运行它。您可以指定要捕获的窗口(例如整个窗口或仅当前/活动窗口),还可以进行一些基本编辑,例如锐化,裁剪或调整图像大小。

这是命令行选项,特别有趣的是

i_view32 /capture=0 /convert=wholescreen.png

6

您可以尝试使用boxcutter工具:

usage: boxcutter [OPTIONS] [OUTPUT_FILENAME]

Saves a bitmap screenshot to 'OUTPUT_FILENAME' if given.  Otherwise, 
screenshot is stored on clipboard by default.

OPTIONS
  -c, --coords X1,Y1,X2,Y2    capture the rectange (X1,Y1)-(X2,Y2)
  -f, --fullscreen            fullscreen screenshot
  -v, --version               display version information
  -h, --help                  display help message

该版本支持多台显示器,但在1.5版中增加了一些额外的黑色区域
Thomas Weller

对于那些对紧凑性感兴趣的人,boxcutter对于全屏.exe仅22K,对于常规.exe仅502K。它是开源的。对我来说很棒。
frakman1

6

Screenshot-cmd截取桌面或由窗口标题选择的任何窗口的屏幕截图。也可以选择要捕获的矩形。结果存储为png文件。(2011年的最新更新)

选项:
    -wt WINDOW_TITLE
            选择带有该标题的窗口。
            标题不得包含空格(“”)。
    -wh WINDOW_HANDLE
            通过手柄选择窗口
            (表示为十六进制字符串-fe“ 0012079E”) 
    -rc左上右下
            作物来源。如果未提供WINDOW_TITLE
            (0,0)在桌面的左上角,
            否则,如果WINDOW_TITLE匹配了桌面窗口
            (0,0)是左上角。
    -o文件名
            输出文件名,如果没有,将保存图像
            在当前工作目录中为“ screenshot.png”。
    -H
            显示此帮助信息。

灵感来源:http//blog.mozilla.com/ted/2009/02/05/command-line-screenshot-tool-for-windows/


1
这是开源的BSD许可证。非常简单和小巧-对我来说,这些都是优势。
Jarekczek 2015年

2

您可以使用Pillowpython库获取主监视器的屏幕截图

第一步:安装枕头:

pip install -user pillow

步骤2:使用以下代码获取屏幕截图:

from PIL import ImageGrab
img = ImageGrab.grab()
img.save('screenshot.bmp')

1
首先,我尝试了imagemagic解决方案,但是当我看到那段Python代码后,便在交互式Python CLI中进行了尝试,第二秒钟后,我很高兴!谢谢!!
domih

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.