Machen Sie einen Screenshot von der Befehlszeile in Windows

51

Ich suche nach einer Möglichkeit, einen Screenshot des gesamten Bildschirms von der Befehlszeile aus zu erstellen. Betriebssystem ist Windows. Etwas wie das:

C:\>screenshot.exe screen1.png
Željko Filipin
quelle
1
Warum möchtest du so etwas tun? Abgesehen von dem offensichtlichen Mangel (es ist möglich, nur Screenshots der Befehlszeile zu machen, an der Sie gerade arbeiten), was ist mit den "regulären" Lösungen für diesen Zweck falsch?
Turm
7
Warum sollte es eingeschränkt sein, nur ein Bild der cmd-Linie aufzunehmen? Ich denke, die Frage geht eher in Richtung Automatisierung.
Gerd Klima
Nun, in dem Moment, in dem er einen Screenshot machen möchte, muss er die Eingabetaste drücken, um den Befehl zu geben, nicht wahr? Natürlich könnte er ein Skript verwenden, um es zeitlich zu aktivieren, aber dann erfindet er heißes Wasser wirklich neu.
Turm
Ich möchte ein Skript schreiben, das eine eml-Datei in Thunderbird öffnet, einen Screenshot erstellt, eine andere Datei öffnet, einen weiteren Screenshot erstellt ... Für alle Dateien in einem Ordner. Ich möchte das Screenshot-Tool über die Befehlszeile ausführen, damit es automatisiert werden kann. Um es klar auszudrücken, möchte ich keinen Screenshot der Befehlszeile machen, sondern den gesamten Bildschirm. Tatsächlich habe ich das Drehbuch bereits geschrieben, ich suche nur nach weiteren Optionen, um den Screenshot zu machen.
Željko Filipin
2
@Idigias: Erstens ist der Bildschirm größer als eine CMD-Box, zweitens: Wenn ein Skript ein GUI-Tool startet, wird dieses GUI-Tool fokussiert. Ihr "offensichtlicher Mangel" ist also nicht offensichtlich und auch kein Mangel. Haben Sie jemals mit Kommandozeilen gearbeitet?
tvCa

Antworten:

26

Laden Sie imagemagick herunter . Viele Bildbearbeitungswerkzeuge für die Befehlszeile sind enthalten. Mit dem Import können Sie einen Teil des Bildschirms oder den gesamten Bildschirm erfassen und das Bild in einer Datei speichern. So speichern Sie beispielsweise den gesamten Bildschirm als JPEG:

import -window root screen.jpeg

Wenn Sie mit der Maus in ein Fenster klicken oder einen Bildschirmbereich auswählen und dort speichern möchten, verwenden Sie einfach:

import box.png
DaveParillo
quelle
13
Dies scheint unter Windows nicht zu funktionieren. Ich erhalte einen X-Server-Fehler wegen nicht gefundener Datei.
Binary Phile
2
@BinaryPhile Ja, ich denke, das würde nur mit einem X-Server funktionieren, der auf Cygwin läuft.
CMCDragonkai
Bei mir funktioniert es immer noch nicht. Ich erhalte einen Screenshot, aber wie erwartet werden nur die X-Anwendungen angezeigt.
Reinierpost
hm, ImageMagick ist 25 MB groß und bietet jede Menge cooles Zeug. Die Datei screenCapture.bat (siehe unten) hat eine Größe von 9 KB und führt genau das aus, was das OP angefordert hat. Bei 0,04% der Größe von ImageMagick.
Johny, warum
41

Diese Frage wurde bereits beantwortet, aber ich dachte, ich würde das auch tun. NirCmd (Freeware, leider nicht Open Source) kann zusammen mit zahlreichen anderen Funktionen Screenshots von der Kommandozeile machen.

Führen Sie dies über die Befehlszeile aus, entweder im Verzeichnis nircmd.exe oder wenn Sie es in Ihren Ordner system32 kopiert haben:

nircmd.exe savescreenshot screen1.png

macht was du willst. Sie können es auch so verzögern:

nircmd.exe cmdwait 2000 savescreenshot screen1.png

Das wird 2000 Millisekunden (2 Sekunden) warten und dann den Screenshot aufnehmen und speichern.

Zacharyliu
quelle
Nircmdunterstützt nicht mehrere Bildschirme. Es wird nur der primäre Bildschirm erfasst.
Thomas Weller
1
Es sieht so aus, als ob die neuesten Versionen mehrere Bildschirme ausführen können. savescreenshotfull [Dateiname]
w32sh
Ich konnte den Download-Link für nircmd2 anfangs nicht finden. Die Google-Suche hat nichts angezeigt. Für Benutzer nircmd2, die herunterladen möchten, befindet sich der Download-Link ganz unten auf der Seite nirsoft.net/utils/nircmd.html . Sie können diesen Download-Link direkt verwenden: nirsoft.net/utils/nircmd.zip
alpha_989
17

Dies kann ohne externe Tools durchgeführt werden (Sie benötigen lediglich das installierte .net-Framework, das standardmäßig auf allen Geräten ab Vista installiert ist) - screenCapture.bat . Es ist ein selbst kompiliertes C # -Programm, und Sie können die Ausgabe in wenigen Formaten speichern und nur das aktive Fenster oder den gesamten Bildschirm erfassen:

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

Beispiele:

call screenCapture notepad.jpg "Notepad"
call screenCapture screen.png
npocmaka
quelle
2
Auf jeden Fall die beste Lösung. Winzige 9K! Das sind 0,04% der Größe von ImageMagick (25 Mb). Es verwendet die integrierte Windows-Funktionalität. Kleiner als alle anderen Lösungen auf dieser Seite. Beste!
Johny, warum
1
Eine Sache, die mir an dieser Lösung aufgefallen ist, ist, dass es bestimmte Dinge gibt, die nicht erfasst werden. Einige Anwendungen hängen sich beispielsweise an andere Anwendungen an, die nicht im erfassten Bild gerendert werden. In diesen extremen Fällen fand ich, dass MiniCap funktioniert. In den meisten Fällen ist diese Lösung jedoch die schnellste und unkomplizierteste, die Sie finden können.
F1234k
Hallo @npocmaka, ich habe zwei Monitore, auf denen Desktop erweitert ist. Ich möchte einen Screenshot des Desktops des zweiten Monitors machen. Ihr Programm macht jedoch nur Screenshots vom primären Desktop. Irgendein Trick?
mini
@mini - können Sie den C # Teil des Skripts bearbeiten mit dieser . Ich werde versuchen, dies am Wochenende hinzuzufügen
npocmaka
@npocmaka, Da ich mit C # nicht vertraut bin, werde ich auf Ihr Update warten. Danke vielmals.
mini
13

Andere Vorschläge sind in Ordnung - Sie können auch MiniCap ausprobieren, das kostenlos ist und einige andere Funktionen wie die flexible Benennung von Dateien und verschiedene Aufnahmemodi bietet: http://www.donationcoder.com/Software/Mouser/MiniCap/index.html

(Haftungsausschluss: Ich bin der Autor von MiniCap).


quelle
1
Dann müssen Sie auch der Autor von Screenshot Captor sein. Ich fand es eine bessere Lösung für meine Bedürfnisse. Danke!
jon3laze
1
Es ist nur für den persönlichen Gebrauch kostenlos. Für die kommerzielle Nutzung wird eine Lizenz für Screenshot Captor benötigt.
Thomas Weller
9

Probieren Sie IrfanView aus .

Sie können es über die Befehlszeile ausführen. Sie können angeben, welches Fenster erfasst werden soll - z. B. das gesamte Fenster oder nur das aktuelle / aktive Fenster - und Sie können auch einige grundlegende Bearbeitungsschritte ausführen, z. B. das Scharfzeichnen, Zuschneiden oder Ändern der Bildgröße.

Hier sind die Kommandozeilenoptionen besonders interessant

i_view32 /capture=0 /convert=wholescreen.png
John Liu
quelle
6

Sie können das Boxcutter- Tool ausprobieren :

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
quelle
Dieser unterstützt mehrere Monitore, fügt jedoch in Version 1.5 einen zusätzlichen schwarzen Bereich hinzu
Thomas Weller,
Für diejenigen, die an Kompaktheit interessiert sind, beträgt Boxcutter nur 22 KB für die Vollbild-EXE-Datei und 502 KB für die reguläre EXE-Datei. Es ist Open Source. Funktioniert gut für mich.
frakman1
6

Screenshot-cmd erstellt einen Screenshot eines Desktops oder eines Fensters, das nach Fenstertitel ausgewählt wurde. Es ist auch möglich, ein zu erfassendes Rechteck auszuwählen. Das Ergebnis wird als PNG-Datei gespeichert. (letzte Aktualisierung im Jahr 2011)

OPTIONEN:
    -wt WINDOW_TITLE
            Fenster mit diesem Titel auswählen.
            Titel darf kein Leerzeichen ("") enthalten.
    -wh WINDOW_HANDLE
            Wählen Sie das Fenster am Griff aus
            (Darstellung als Hex-String - zB "0012079E") 
    -rc LINKS OBEN RECHTS UNTEN
            Erntequelle. Wenn kein WINDOW_TITLE angegeben ist
            (0,0) ist die linke obere Ecke des Desktops,
            sonst, wenn WINDOW_TITLE ein Desktop-Fenster bearbeitet
            (0,0) ist die linke obere Ecke.
    -o DATEINAME
            Ausgabedateiname, wenn keine, wird das Bild gespeichert
            als "screenshot.png" im aktuellen Arbeitsverzeichnis.
    -h
            Zeigt diese Hilfeinformation an.

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

Bartek
quelle
1
Dies ist Open Source, BSD-Lizenz. Sehr einfach und klein - für mich sind das Vorteile.
Jarekczek
2

Sie können die PillowPython-Bibliothek verwenden, um Screenshots des primären Monitors aufzunehmen

Schritt 1: Kissen installieren:

pip install -user pillow

Schritt 2: Machen Sie Screenshots mit folgendem Code:

from PIL import ImageGrab
img = ImageGrab.grab()
img.save('screenshot.bmp')
alpha_989
quelle
1
Zuerst habe ich die imagemagische Lösung ausprobiert, aber als ich diesen Teil des Python-Codes gesehen habe, habe ich ihn in einer interaktiven Python-CLI ausprobiert und eine Sekunde später war ich glücklich! Vielen Dank!!
30.
1

Sie können kommerzielles Produkt- Snapit verwenden , um großartige Screenshots von der Befehlszeile aus zu erstellen .

Željko Filipin
quelle
2
Dies ist jetzt ein kommerzielles Produkt , benötigt .NET und ist nicht für Windows 7 ++ freigegeben. Der in der Antwort angegebene Link gibt HTTP 404 zurück.
Thomas Weller
Ja, das GitHub-Repo existiert nicht.
Alpha_989