Scatta una schermata dalla riga di comando in Windows


50

Sto cercando un modo per fare uno screenshot dell'intero schermo dalla riga di comando. Il sistema operativo è Windows. Qualcosa come questo:

C:\>screenshot.exe screen1.png

1
Perché vorresti fare qualcosa del genere? A parte l'evidente carenza (essendo in grado di catturare solo schermate della riga di comando su cui stai attualmente lavorando), cosa c'è di sbagliato con le soluzioni "regolari" a tale scopo?
Rook,

7
Perché sarebbe limitato scattare una foto solo della linea cmd? Penso che la domanda vada più lungo le linee dell'automazione.
Gerd Klima,

Bene, nel momento in cui vuole fare uno screenshot, deve premere Invio per dare il comando, no? Ovviamente potrebbe usare una sceneggiatura per attivarla nel tempo, ma poi sta davvero reinventando l'acqua calda.
Rook,

Vorrei scrivere uno script che apre il file eml in Thunderbird, scatta una schermata, apre un altro file, scatta un'altra schermata ... Per tutti i file in una cartella. Voglio eseguire lo strumento schermata dalla riga di comando, in modo che possa essere automatizzato. Per essere chiari, non voglio fare una schermata della riga di comando, ma dell'intero schermo. In effetti, ho già scritto la sceneggiatura, sto solo cercando altre opzioni per scattare la schermata.
Željko Filipin,

2
@Idigias: prima di tutto, lo schermo è più grande di una casella CMD, ma in secondo luogo: quando uno script avvia uno strumento GUI, tale strumento GUI si attiva. Quindi, la tua "ovvia deficienza" non è ovvia, e nemmeno nessuna deficienza. Hai mai lavorato con la riga di comando?
tvCa

Risposte:


26

Scarica imagemagick . Sono inclusi molti strumenti di manipolazione delle immagini da riga di comando. l'importazione consente di acquisire una parte o tutta una schermata e salvare l'immagine in un file. Ad esempio, per salvare l'intero schermo come jpeg:

import -window root screen.jpeg

Se vuoi usare il mouse per fare clic all'interno di una finestra o selezionare un'area dello schermo e salvare un png, usa solo:

import box.png

13
Questo non sembra funzionare su Windows. Ottengo un errore del server X sul file non trovato.
File binario

2
@BinaryPhile Sì, penso che funzionerebbe solo con un server X in esecuzione su Cygwin.
CMCDragonkai,

Non funziona ancora per me. Ottengo uno screenshot, ma vengono visualizzate solo le applicazioni X (come previsto).
reinierpost,

hm, ImageMagick ha una dimensione di 25 Mb e offre moltissime cose interessanti. screenCapture.bat, di seguito, è 9 Kb e fa esattamente ciò che l'OP ha richiesto. A 0,04% delle dimensioni di ImageMagick.
johny perché il

41

A questa domanda è già stata data una risposta, ma ho pensato di aggiungere anche questo. NirCmd (freeware, purtroppo, non open source) può catturare schermate dalla riga di comando, insieme alle numerose altre funzioni che può svolgere.

Eseguendolo dalla riga di comando nella directory di nircmd.exe o se lo hai copiato nella cartella system32:

nircmd.exe savescreenshot screen1.png

fa quello che vuoi. Puoi anche ritardarlo in questo modo:

nircmd.exe cmdwait 2000 savescreenshot screen1.png

Ciò attenderà 2000 millisecondi (2 secondi), quindi catturerà e salverà lo screenshot.


Nircmdnon supporta più schermi. Catturerà solo la schermata principale.
Thomas Weller,

1
Sembra che le versioni recenti possano fare più schermate. savescreenshotfull [nome file]
w32sh,

Inizialmente non sono riuscito a trovare il link per il download di nircmd2. La ricerca di Google non ha mostrato nulla. Per gli utenti che desiderano scaricare nircmd2, il collegamento per il download si trova in fondo alla pagina nirsoft.net/utils/nircmd.html . È possibile utilizzare direttamente questo collegamento per il download: nirsoft.net/utils/nircmd.zip
alpha_989

16

può essere fatto senza strumenti esterni (hai solo bisogno di un framework .net installato, che è installato di default su tutto da Vista e sopra) - screenCapture.bat . È un programma C # autocompilato e puoi salvare l'output in pochi formati e catturare solo la finestra attiva o l'intero schermo:

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

Esempi:

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

2
Sicuramente la soluzione migliore. Super-piccolo 9K! È lo 0,04% delle dimensioni di ImageMagick (25 Mb). Utilizza la funzionalità integrata di Windows. Più piccolo di tutte le altre soluzioni in questa pagina. Migliore!
johny perché il

1
Una cosa che ho notato di questa soluzione è che ci sono cose specifiche che non cattura. Ad esempio, alcune applicazioni si stanno attaccando e creando hud su altre applicazioni che non sono renderizzate nell'immagine acquisita. In quei casi estremi ho scoperto che MiniCap funziona. Nella maggior parte dei casi, questa soluzione è la più veloce e semplice che puoi trovare.
F1234k,

Ciao @npocmaka, ho due monitor che il desktop è esteso su di loro. Voglio fare uno screenshot del desktop del secondo monitor. Ma il tuo programma prende solo schermate dal desktop principale. Qualche trucco?
mini

@mini - puoi modificare la parte c # dello script usando questo . Proverò ad aggiungere aggiungere questo nel fine settimana
npocmaka il

@npocmaka, Poiché non ho familiarità con C #, aspetterò il tuo aggiornamento. Molte grazie.
mini

13

Altri suggerimenti vanno bene: puoi anche provare MiniCap, che è gratuito e ha alcune altre funzionalità come la denominazione flessibile dei file e alcune diverse modalità di acquisizione: http://www.donationcoder.com/Software/Mouser/MiniCap/index.html

(disclaimer: sono l'autore di MiniCap).


1
Quindi devi anche essere l'autore di Screenshot Captor. Ho trovato una soluzione migliore per le mie esigenze. Grazie!
jon3laze,

1
È gratuito solo per uso personale. Per uso commerciale, è necessaria una licenza per Screenshot Captor.
Thomas Weller,

9

Prova IrfanView .

Puoi eseguirlo dalla riga di comando. Puoi specificare quale finestra catturare - come l'intera finestra o solo la finestra corrente / attiva - e puoi anche eseguire alcune modifiche di base come nitidezza, ritaglio o ridimensionamento delle immagini.

Ecco le opzioni della riga di comando , è particolarmente interessante

i_view32 /capture=0 /convert=wholescreen.png

6

Puoi provare lo strumento 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

Questo supporta più monitor, ma aggiunge un'area nera extra nella versione 1.5
Thomas Weller,

Per coloro che sono interessati alla compattezza, il decespugliatore è solo 22K per il file .exe a schermo intero e 502K per il file .exe normale. È open-source. Funziona benissimo per me.
frakman1,

6

Screenshot-cmd prende uno screenshot di un desktop o di qualsiasi finestra selezionata dal titolo della finestra. È anche possibile selezionare il rettangolo da acquisire. Il risultato è memorizzato come file png. (ultimo aggiornamento nel 2011)

OPZIONI:
    -wt WINDOW_TITLE
            Seleziona la finestra con questo titolo.
            Il titolo non deve contenere spazio ("").
    -wh WINDOW_HANDLE
            Seleziona la finestra dalla maniglia
            (rappresentato come stringa esadecimale - fe "0012079E") 
    -rc SINISTRA SUPERIORE DESTRO INFERIORE
            Fonte di coltura. Se non viene fornito WINDOW_TITLE
            (0,0) è l'angolo superiore sinistro del desktop,
            altrimenti se WINDOW_TITLE crea una finestra del desktop
            (0,0) è l'angolo in alto a sinistra.
    -o FILENAME
            Nome del file di output, se non presente, l'immagine verrà salvata
            come "screenshot.png" nella directory di lavoro corrente.
    -h
            Mostra queste informazioni di aiuto.

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


1
Questa è open source, licenza BSD. Molto semplice e piccolo - per me questi sono vantaggi.
Jarekczek,

2

È possibile utilizzare la Pillowlibreria Python per acquisire schermate del monitor principale

Step1: installare il cuscino:

pip install -user pillow

Passaggio 2: acquisire schermate con il seguente codice:

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

1
Per prima cosa ho provato la soluzione imagemagic, ma quando ho visto quel pezzo di codice Python, l'ho provato in una CLI Python interattiva e un secondo dopo ero felice! Grazie!!
domih

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.