Tome una captura de pantalla desde la línea de comandos en Windows

51

Estoy buscando una manera de tomar una captura de pantalla de toda la pantalla desde la línea de comandos. El sistema operativo es Windows. Algo como esto:

C:\>screenshot.exe screen1.png
Željko Filipin
fuente
1
¿Por qué querrías hacer algo así? Además de la deficiencia obvia (poder tomar capturas de pantalla solo de la línea de comando en la que está trabajando actualmente), ¿qué hay de malo con las soluciones "normales" para tal propósito?
Torre
77
¿Por qué estaría restringido tomar solo una foto de la línea cmd? Creo que la pregunta va más en la línea de la automatización.
Gerd Klima
Bueno, en el momento en que quiere tomar una captura de pantalla, tiene que presionar enter para dar la orden, ¿no? Por supuesto, podría usar un script para activarlo en el tiempo, pero realmente está reinventando el agua caliente.
Torre
Me gustaría escribir un script que abra el archivo eml en Thunderbird, tome una captura de pantalla, abra otro archivo, tome otra captura de pantalla ... Para todos los archivos en una carpeta. Quiero ejecutar la herramienta de captura de pantalla desde la línea de comando, para que pueda automatizarse. Para ser claros, no quiero tomar una captura de pantalla de la línea de comandos, sino de toda la pantalla. De hecho, ya he escrito el guión, solo estoy buscando más opciones para tomar la captura de pantalla.
Željko Filipin
2
@Idigias: en primer lugar, la pantalla es más grande que un cuadro CMD, pero en segundo lugar: cuando un script inicia una herramienta GUI, esa herramienta GUI se enfoca. Entonces, su "deficiencia obvia" no es obvia, y tampoco hay deficiencia. ¿Alguna vez has trabajado con la línea de comando?
tvCa

Respuestas:

26

Descargar imagemagick . Se incluyen muchas herramientas de manipulación de imágenes de línea de comando. importar le permite capturar una parte o la totalidad de una pantalla y guardar la imagen en un archivo. Por ejemplo, para guardar toda la pantalla como un JPEG:

import -window root screen.jpeg

Si desea usar el mouse para hacer clic dentro de una ventana o seleccionar una región de pantalla y guardar aa png, simplemente use:

import box.png
DaveParillo
fuente
13
Esto no parece funcionar en Windows. Recibo un error del servidor X sobre el archivo no encontrado.
Binary Phile
2
@BinaryPhile Sí, creo que esto solo funcionaría con un servidor X que se ejecuta en Cygwin.
CMCDragonkai
Todavía no me funciona. Recibo una captura de pantalla, pero solo aparecen las aplicaciones X (como se esperaba).
reinierpost
hm, ImageMagick tiene 25 Mb, y hace TONELADAS de cosas geniales. screenCapture.bat, a continuación, tiene 9 Kb y simplemente hace exactamente lo que solicitó el OP. A 0,04% del tamaño de ImageMagick.
johny por qué el
41

Esta pregunta ya ha sido respondida, pero pensé en incluirla también. NirCmd (software gratuito, lamentablemente, no de código abierto) puede tomar capturas de pantalla desde la línea de comandos, junto con las numerosas otras funciones que puede realizar.

Ejecutando esto desde la línea de comandos, ya sea en el directorio nircmd.exe o si lo copió a su carpeta system32:

nircmd.exe savescreenshot screen1.png

hace lo que quieres También puedes retrasarlo así:

nircmd.exe cmdwait 2000 savescreenshot screen1.png

Eso esperará 2000 milisegundos (2 segundos) y luego capturará y guardará la captura de pantalla.

zacharyliu
fuente
NircmdNo es compatible con múltiples pantallas. Capturará solo la pantalla principal.
Thomas Weller
1
Parece que las versiones recientes pueden hacer múltiples pantallas. savecreenshotfull [nombre de archivo]
w32sh
No pude encontrar el enlace de descarga para nircmd2 inicialmente. La búsqueda de Google no mostró nada. Para los usuarios que buscan descargar nircmd2, el enlace de descarga se encuentra en la parte inferior de la página nirsoft.net/utils/nircmd.html . Puede usar directamente este enlace de descarga: nirsoft.net/utils/nircmd.zip
alpha_989
17

se puede hacer sin herramientas externas (solo necesita instalar .net framework, que se instala de manera predeterminada en todo, desde vista y superior) - screenCapture.bat . Es un programa C # autocompilado y puede guardar la salida en pocos formatos y capturar solo la ventana activa o la pantalla completa:

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

Ejemplos:

call screenCapture notepad.jpg "Notepad"
call screenCapture screen.png
npocmaka
fuente
2
Definitivamente la mejor solución. Súper pequeño 9K! Eso es 0.04% del tamaño de ImageMagick (25 Mb). Utiliza la funcionalidad integrada de Windows. Más pequeño que todas las otras soluciones en esta página. ¡Mejor!
johny por qué
1
Una cosa que noté acerca de esta solución es que hay cosas específicas que no captura. Por ejemplo, algunas aplicaciones se unen y crean hud en otras aplicaciones que no se representan en la imagen capturada. En esos casos extremos descubrí que MiniCap funciona. Sin embargo, en la mayoría de los casos, esta solución aquí es la más rápida y sencilla que puede encontrar.
F1234k
Hola @npocmaka, tengo dos monitores que el escritorio está extendido en ellos. Quiero tomar una captura de pantalla del escritorio del segundo monitor. Pero su programa solo toma capturas de pantalla del escritorio principal. Cualquier truco?
mini
@mini: puede editar la parte c # del script con esto . Intentaré agregar agregar esto el fin de semana
npocmaka
@npocmaka, como no estoy familiarizado con C #, estaré esperando tu actualización. Muchas gracias.
mini
13

Otras sugerencias están bien: también puede probar MiniCap, que es gratuito y tiene otras características como nombres de archivos flexibles y algunos modos de captura diferentes: http://www.donationcoder.com/Software/Mouser/MiniCap/index.html

(descargo de responsabilidad: soy el autor de MiniCap).


fuente
1
Entonces también debes ser el autor de Captura de pantalla. Encontré una mejor solución para mis necesidades. ¡Gracias!
jon3laze
1
Es gratis solo para uso personal. Para uso comercial, se necesita una licencia para Screenshot Captor.
Thomas Weller
9

Prueba IrfanView .

Puede ejecutarlo a través de la línea de comandos. Puede especificar qué ventana capturar, como la ventana completa o solo la ventana actual / activa, y también puede hacer una edición básica, como enfocar, recortar o cambiar el tamaño de las imágenes.

Aquí están las opciones de línea de comando , particularmente interesante es

i_view32 /capture=0 /convert=wholescreen.png
john liu
fuente
6

Puedes probar la herramienta 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
James
fuente
Éste admite varios monitores, pero agrega un área negra adicional en la versión 1.5
Thomas Weller
Para aquellos interesados ​​en la compacidad, boxcutter tiene solo 22K para el .exe de pantalla completa y 502K para el .exe normal. Es de código abierto. Funciona muy bien para mi.
frakman1
6

Screenshot-cmd toma una captura de pantalla de un escritorio o cualquier ventana seleccionada por el título de la ventana. También es posible seleccionar un rectángulo para capturar. El resultado se almacena como un archivo png. (última actualización en 2011)

OPCIONES
    -wt WINDOW_TITLE
            Seleccionar ventana con este título.
            El título no debe contener espacio ("").
    -wh WINDOW_HANDLE
            Seleccionar ventana por su asa
            (representado como cadena hexadecimal - fe "0012079E") 
    -rc IZQUIERDA SUPERIOR DERECHA ABAJO
            Fuente de cultivo. Si no se proporciona WINDOW_TITLE
            (0,0) es la esquina superior izquierda del escritorio,
            de lo contrario, si WINDOW_TITLE combina una ventana de escritorio
            (0,0) es su esquina superior izquierda.
    -o FILENAME
            Nombre del archivo de salida, si no hay ninguno, la imagen se guardará
            como "screenshot.png" en el directorio de trabajo actual.
    -h
            Muestra esta información de ayuda.

Inspirado por: http://blog.mozilla.com/ted/2009/02/05/command-line-screenshot-tool-for-windows/

Bartek
fuente
1
Esto es de código abierto, licencia BSD. Muy simple y pequeño, para mí estas son ventajas.
Jarekczek
2

Puede usar la Pillowbiblioteca de Python para tomar capturas de pantalla del monitor primario

Paso 1: instalar Pillow:

pip install -user pillow

Paso 2: toma capturas de pantalla con el siguiente código:

from PIL import ImageGrab
img = ImageGrab.grab()
img.save('screenshot.bmp')
alpha_989
fuente
1
Primero probé la solución imagemagic, pero cuando vi ese fragmento de código de Python, lo probé en una CLI interactiva de Python y un segundo después ¡me sentí feliz! ¡¡Gracias!!
domih
1

Puede usar el complemento comercial de productos para tomar impresionantes capturas de pantalla desde la línea de comandos.

Željko Filipin
fuente
2
Ahora es un producto comercial , necesita .NET y no está disponible para Windows 7 ++. El enlace que figura en la respuesta devuelve HTTP 404.
Thomas Weller
Sí, el repositorio de GitHub no existe.
alpha_989