Ambil tangkapan layar dari baris perintah di Windows

51

Saya mencari cara untuk mengambil tangkapan layar dari seluruh layar dari baris perintah. Sistem operasinya adalah Windows. Sesuatu seperti ini:

C:\>screenshot.exe screen1.png
Željko Filipin
sumber
1
Mengapa Anda ingin melakukan hal seperti itu? Terlepas dari kekurangan yang jelas (itu bisa mengambil screenshot hanya dari baris perintah yang sedang Anda kerjakan), apa yang salah dengan solusi "biasa" untuk tujuan seperti itu?
Benteng
7
Mengapa dibatasi untuk memotret garis cmd saja? Saya pikir pertanyaannya lebih sejalan dengan otomatisasi.
Gerd Klima
Nah, pada saat dia ingin mengambil tangkapan layar, dia harus menekan enter untuk memberikan perintah, bukan? Dia tentu saja dapat menggunakan skrip untuk mengaktifkan waktu, tetapi kemudian dia benar-benar menciptakan kembali air panas.
Benteng
Saya ingin menulis skrip yang membuka file eml di Thunderbird, mengambil screenshot, membuka file lain, mengambil screenshot lain ... Untuk semua file dalam folder. Saya ingin menjalankan alat screen shot dari baris perintah, sehingga bisa otomatis. Untuk lebih jelasnya, saya tidak ingin mengambil screenshot dari command line, tetapi dari seluruh layar. Sebenarnya, saya sudah menulis skrip, saya hanya mencari lebih banyak opsi untuk mengambil screenshot.
Željko Filipin
2
@Idigias: pertama-tama, layar lebih besar dari kotak CMD, tetapi kedua: ketika skrip meluncurkan alat GUI, alat GUI itu menjadi fokus. Jadi, "kekurangan nyata" Anda tidak jelas, dan juga tidak kekurangan. Pernahkah Anda bekerja dengan baris perintah?
tvCa

Jawaban:

26

Unduh imagemagick . Banyak alat manipulasi gambar baris perintah disertakan. impor memungkinkan Anda untuk mengambil beberapa atau semua layar dan menyimpan gambar ke file. Misalnya, untuk menyimpan seluruh layar sebagai jpeg:

import -window root screen.jpeg

Jika Anda ingin menggunakan mouse untuk mengklik di dalam jendela atau memilih wilayah layar & menyimpan png, cukup gunakan:

import box.png
DaveParillo
sumber
13
Ini sepertinya tidak berfungsi di Windows. Saya mendapatkan kesalahan server X tentang file yang tidak ditemukan.
Binary Phile
2
@ Biner Ya, saya pikir ini hanya akan bekerja dengan server X yang berjalan di Cygwin.
CMCDragonkai
Itu masih tidak bekerja untuk saya. Saya mendapatkan tangkapan layar, tetapi hanya aplikasi X yang muncul (seperti yang diharapkan).
reinierpost
hm, ImageMagick adalah 25 Mb, dan melakukan TON hal-hal keren. screenCapture.bat, di bawah, adalah 9 Kb, dan cukup melakukan persis apa yang diminta OP. Pada 0,04% ukuran ImageMagick.
Johnny mengapa
41

Pertanyaan ini sudah dijawab, tetapi saya pikir saya akan memasukkan ini juga. NirCmd (freeware, sayangnya, bukan open source) dapat mengambil tangkapan layar dari baris perintah, bersama dengan berbagai fungsi lain yang dapat dilakukan.

Menjalankan ini dari baris perintah di direktori nircmd.exe atau jika Anda menyalinnya ke folder system32 Anda:

nircmd.exe savescreenshot screen1.png

lakukan apa yang kamu inginkan. Anda juga dapat menunda seperti ini:

nircmd.exe cmdwait 2000 savescreenshot screen1.png

Itu akan menunggu 2000 milidetik (2 detik), dan kemudian menangkap dan menyimpan tangkapan layar.

zacharyliu
sumber
Nircmdtidak mendukung banyak layar. Ini akan menangkap layar utama saja.
Thomas Weller
1
Sepertinya versi terbaru dapat melakukan banyak layar. savescreenshotfull [nama file]
w32sh
Saya tidak dapat menemukan tautan unduhan untuk nircmd2 pada awalnya. Pencarian Google tidak menunjukkan apa-apa. Untuk pengguna yang ingin mengunduh nircmd2, tautan unduhan terletak di bagian paling bawah halaman nirsoft.net/utils/nircmd.html . Anda dapat langsung menggunakan tautan unduhan ini: nirsoft.net/utils/nircmd.zip
alpha_989
17

itu dapat dilakukan tanpa alat eksternal (Anda hanya perlu menginstal .net framework, yang diinstal secara default pada semuanya dari vista dan di atas) - screenCapture.bat . Ini adalah program C # yang dikompilasi sendiri dan Anda dapat menyimpan output dalam beberapa format dan hanya menangkap jendela aktif atau seluruh layar:

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

Contoh:

call screenCapture notepad.jpg "Notepad"
call screenCapture screen.png
npocmaka
sumber
2
Jelas solusi terbaik. 9K super kecil! Itu 0,04% ukuran ImageMagick (25 Mb). Ini menggunakan fungsionalitas Windows bawaan. Lebih kecil dari semua solusi lain di halaman ini. Terbaik!
Johnny mengapa
1
Satu hal yang saya perhatikan tentang solusi ini adalah ada beberapa hal spesifik yang tidak ditangkapnya. Misalnya, beberapa aplikasi melampirkan diri mereka sendiri dan membuat hud pada aplikasi lain yang tidak ditampilkan dalam gambar yang diambil. Dalam kasus-kasus ekstrim saya menemukan bahwa MiniCap berfungsi. Namun dalam kebanyakan kasus, solusi di sini adalah yang tercepat dan paling tidak rumit yang dapat Anda temukan.
F1234k
Hai @npocmaka, saya punya dua monitor yang diperpanjang desktopnya. Saya ingin mengambil tangkapan layar desktop monitor kedua. Tetapi program Anda hanya mengambil tangkapan layar dari desktop utama. Ada trik?
mini
@mini - Anda dapat mengedit bagian c # dari skrip menggunakan ini . Saya akan mencoba menambahkan ini pada akhir pekan
npocmaka
@npocmaka, Karena saya tidak terbiasa dengan C #, saya akan menunggu pembaruan Anda. Terima kasih banyak.
mini
13

Saran lain baik-baik saja - Anda juga dapat mencoba MiniCap, yang gratis dan memiliki beberapa fitur lain seperti penamaan file yang fleksibel dan beberapa mode pengambilan yang berbeda: http://www.donationcoder.com/Software/Mouser/MiniCap/index.html

(Penafian: Saya penulis MiniCap).


sumber
1
Maka Anda juga harus menjadi penulis Screenshot Captor. Saya menemukan ini solusi yang lebih baik untuk kebutuhan saya. Terima kasih!
jon3laze
1
Ini gratis untuk penggunaan pribadi. Untuk penggunaan komersial, lisensi untuk Screenshot Captor diperlukan.
Thomas Weller
9

Coba IrfanView .

Anda dapat menjalankannya melalui command-line. Anda dapat menentukan jendela mana yang akan diambil - seperti seluruh jendela atau hanya jendela aktif / saat ini - dan Anda juga dapat melakukan beberapa pengeditan dasar seperti mempertajam, memotong, atau mengubah ukuran gambar.

Berikut adalah opsi baris perintah , terutama yang menarik

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

Anda dapat mencoba alat pemotong kotak :

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
sumber
Yang ini mendukung beberapa monitor tetapi menambahkan beberapa area hitam ekstra di versi 1.5
Thomas Weller
Bagi mereka yang tertarik pada kekompakan, boxcutter hanya 22K untuk .exe layar penuh dan 502K untuk .exe biasa. Ini adalah open-source. Bekerja bagus untuk saya.
frakman1
6

Cuplikan layar-cmd mengambil tangkapan layar desktop atau jendela apa pun yang dipilih berdasarkan judul jendela. Dimungkinkan juga untuk memilih kotak yang akan diambil. Hasilnya disimpan sebagai file png. (pembaruan terakhir pada 2011)

PILIHAN:
    -dengan WINDOW_TITLE
            Pilih jendela dengan judul ini.
            Judul tidak boleh mengandung spasi ("").
    -wh WINDOW_HANDLE
            Pilih jendela dengan pegangannya
            (representad as hex string - fe "0012079E") 
    -ROT BAWAH ATAS KANAN ATAS KANAN
            Sumber pangkas. Jika tidak ada WINDOW_TITLE disediakan
            (0,0) adalah sudut kiri atas desktop,
            lain jika WINDOW_TITLE membuat jendela desktop
            (0,0) apakah itu sudut kiri atas.
    -o FILENAME
            Keluarkan nama file, jika tidak ada, gambar akan disimpan
            sebagai "tangkapan layar.png" di direktori kerja saat ini.
    -h
            Memperlihatkan info bantuan ini.

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

Bartek
sumber
1
Ini adalah open source, lisensi BSD. Sangat sederhana dan kecil - bagi saya ini adalah kelebihannya.
Jarekczek
2

Anda dapat menggunakan Pillowpustaka python untuk mengambil tangkapan layar monitor utama

Langkah 1: pasang Bantal:

pip install -user pillow

Langkah2: Ambil tangkapan layar dengan kode berikut:

from PIL import ImageGrab
img = ImageGrab.grab()
img.save('screenshot.bmp')
alpha_989
sumber
1
Pertama saya mencoba solusi imagemagic, tetapi ketika saya melihat potongan kode Python itu, saya mencobanya dalam Python CLI interaktif dan sedetik kemudian saya senang! Terima kasih!!
domih
1

Anda dapat menggunakan snapit produk komersial untuk mengambil tangkapan layar yang luar biasa dari baris perintah.

Željko Filipin
sumber
2
Ini sekarang merupakan produk komersial , membutuhkan .NET dan tidak dirilis untuk Windows 7 ++. Tautan yang diberikan dalam jawaban mengembalikan HTTP 404.
Thomas Weller
Ya repo GitHub tidak ada.
alpha_989