Windows'ta komut satırından ekran görüntüsü alın


51

Komut satırından tüm ekranın ekran görüntüsünü almanın bir yolunu arıyorum. İşletim sistemi Windows. Bunun gibi bir şey:

C:\>screenshot.exe screen1.png

1
Neden böyle bir şey yapmak istiyorsun? Belirgin eksikliğin dışında (üzerinde çalışmakta olduğunuz komut satırının sadece ekran görüntülerini alabiliyor), bu amaçla “normal” çözümlerde yanlış olan ne?
Rook

7
Sadece cmd çizgisinin bir resmini çekmek neden kısıtlanıyor? Sanırım soru otomasyon hatları boyunca daha da ilerliyor.
Gerd Klima

Ekran görüntüsünü almak istediği anda, komutu vermek için enter tuşuna basması gerekiyor, değil mi? Elbette, zamanı-etkinleştirmek için bir senaryo kullanabilirdi, ama sonra gerçekten sıcak suyu yeniden icat ediyor.
Rook

Thunderbird'de eml dosyasını açan, ekran görüntüsünü alan, başka bir dosyayı açan, başka bir ekran görüntüsünü alan bir script yazmak istiyorum ... Bir klasördeki tüm dosyalar için. Ekran görüntüsü aracını komut satırından çalıştırmak istiyorum, böylece otomatikleştirilebilir. Sadece açık olmak gerekirse, komut satırının ekran görüntüsünü almak istemiyorum, ancak ekranın tamamı için. Aslında, senaryoyu zaten yazdım, sadece ekran görüntüsü almak için daha fazla seçenek arıyorum.
jeljko Filipin

2
@Idigias: her şeyden önce, ekran bir CMD kutusundan daha büyük, ancak ikincisi: bir komut dosyası bir GUI aracı başlattığında, bu GUI aracı odaklanır. Yani, sizin "bariz eksikliğiniz" açık değil ve eksiklik de yoktur. Sen hiç komut satırı ile çalıştın mı?
tvCa

Yanıtlar:


26

İmagemagick'i indirin . Birçok komut satırı görüntü işleme aracı dahil edilmiştir. içe aktarma , ekranın bir kısmını veya tamamını yakalamanıza ve görüntüyü bir dosyaya kaydetmenize olanak sağlar. Örneğin, tüm ekranı bir jpeg olarak kaydetmek için:

import -window root screen.jpeg

Fareyi bir pencerenin içine tıklamak veya bir ekran bölgesi seçmek ve bir png kaydetmek için fareyi kullanmak istiyorsanız, sadece şunu kullanın:

import box.png

13
Bu, Windows'ta çalışmıyor gibi görünüyor. Dosya bulunamadı hakkında bir X sunucu hatası alıyorum.
İkili Phile

2
@BinaryPhile Yea Bunun sadece Cygwin'de çalışan bir X sunucusuyla çalışacağını düşünüyorum.
CMCDragonkai

Hala benim için çalışmıyor. Bir ekran görüntüsü alıyorum, ancak yalnızca X uygulamaları görünüyor (beklendiği gibi).
reinierpost

hm, ImageMagick 25 Mb'dir ve çok iyi şeyler yapar. screenCapture.bat, aşağıda 9 Kb'dir ve tam olarak OP'nin istediğini yapar. ImageMagick'in% 0,04'ünde.
johny neden

41

Bu soru zaten cevaplandı, ancak bunu da atabileceğimi düşündüm. NirCmd (ücretsiz, ne yazık ki açık kaynak kodlu değildir) yapabileceği sayısız diğer işlevle birlikte komut satırından ekran görüntüleri alabilir.

Bunu nircmd.exe dizininde ya da sistem32 klasörünüze kopyaladıysanız komut satırından çalıştırmak:

nircmd.exe savescreenshot screen1.png

ne istiyorsan onu yap. Ayrıca bu şekilde geciktirebilirsiniz:

nircmd.exe cmdwait 2000 savescreenshot screen1.png

Bu 2000 milisaniyede (2 saniye) bekleyecek ve ardından ekran görüntüsünü yakalayıp kaydedecektir.


Nircmdbirden fazla ekranı desteklemiyor. Sadece birincil ekranı yakalayacaktır.
Thomas Weller

1
Son sürümleri birden çok ekran yapabilir gibi görünüyor. savescreenshotfull [dosya adı]
w32sh

Başlangıçta nircmd2 indirme linkini bulamadım. Google araması hiçbir şey göstermedi. İndirmek isteyen kullanıcılar için nircmd2, indirme linki sayfanın en altında yer almaktadır nirsoft.net/utils/nircmd.html . Doğrudan bu indirme bağlantısını kullanabilirsiniz: nirsoft.net/utils/nircmd.zip
alpha_989

17

harici araçlar olmadan yapılabilir (yalnızca varsayılan ve uzaktaki her şeye varsayılan olarak yüklenmiş olan .net çerçevesini yüklemeniz gerekir) - screenCapture.bat . Kendi kendine derlenmiş bir C # programıdır ve çıktıyı birkaç formatta kaydedebilir ve sadece aktif pencereyi veya tüm ekranı yakalayabilirsiniz:

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

Örnekler:

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

2
Kesinlikle en iyi çözüm. Süper minik 9K! Bu, ImageMagick'in boyutunun% 0.04'üdür (25 Mb). Yerleşik Windows işlevselliği kullanır. Bu sayfadaki diğer tüm çözümlerden daha küçük. En iyi!
johny neden

1
Bu çözümle ilgili fark ettiğim bir şey, yakalayamadığı belirli şeyler olduğu. Örneğin, bazı uygulamalar kendilerini ekliyor ve yakalanan resimde gösterilmeyen diğer uygulamalarda huds oluşturuyor. Bu aşırı durumlarda MiniCap'in çalıştığını gördüm. Yine de çoğu durumda, bu çözüm tam burada bulabileceğiniz en hızlı ve en karmaşık olanıdır.
F1234k

Merhaba @ npocmaka, masaüstünde genişletilmiş iki monitör var. İkinci monitörün masaüstünün ekran görüntüsünü almak istiyorum. Ancak programınız yalnızca birincil masaüstünden ekran görüntüsü alıyor. Bir numara var mı?
mini

@mini - Kullandığınız komut c # bölümünü düzenleyebilirsiniz bu . Bunu hafta sonları eklemeye çalışacağım
npocmaka

@ npocmaka, C # ile aşina olmadığım için güncellemenizi bekliyorum. Çok teşekkürler.
mini,

13

Diğer öneriler yolunda - ücretsiz ve esnek dosya adlandırma ve bazı farklı çekim modları gibi bazı özelliklere sahip olan MiniCap'i deneyebilirsiniz: http://www.donationcoder.com/Software/Mouser/MiniCap/index.html

(feragatname: Ben MiniCap'in yazarıyım).


1
O zaman Screenshot Captor'un da yazarı olmalısınız. İhtiyaçlarım için daha iyi bir çözüm buldum. Teşekkür ederim!
jon3laze

1
Sadece kişisel kullanım için ücretsizdir. Ticari kullanım için, Screenshot Captor için bir lisans gereklidir.
Thomas Weller

9

IrfanView'ü deneyin .

Komut satırı üzerinden çalıştırabilirsiniz. Hangi pencerenin yakalanacağını - örneğin tüm pencereyi veya yalnızca geçerli / etkin pencereyi - belirleyebilirsiniz ve ayrıca görüntüleri netleştirme, kırpma veya yeniden boyutlandırma gibi bazı temel düzenlemeleri de yapabilirsiniz.

İşte komut satırı seçenekleri , özellikle ilginç

i_view32 /capture=0 /convert=wholescreen.png

6

Boxcutter aracını deneyebilirsiniz :

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

Bu, birden fazla monitörü destekliyor ancak 1.5 sürümünde fazladan siyah bir alan ekliyor
Thomas Weller

Kompaktlık ile ilgilenenler için boxcutter, tam ekran .exe için sadece 22K ve normal .exe için 502K'dır. Açık kaynaklı. Benim için harika çalışıyor.
frakman1

6

Ekran görüntüsü-cmd , masaüstünün veya pencere başlığına göre seçilen herhangi bir pencerenin ekran görüntüsünü alır. Yakalacak dikdörtgeni seçmek de mümkündür. Sonuç bir png dosyası olarak saklanır. (2011'deki son güncelleme)

SEÇENEKLER:
    -wt WINDOW_TITLE
            Bu başlık ile pencereyi seçin.
            Başlık boşluk içermemelidir ("").
    -wh WINDOW_HANDLE
            Kolu tarafından pencereyi seçin
            (hex string olarak gösterilmektedir - fe "0012079E") 
    -rc SOL TOP SAĞ ALT
            Ürün kaynağı WINDOW_TITLE sağlanmadıysa
            (0,0) masaüstünün üst köşesinde bırakılır,
            WINDOW_TITLE bir masaüstü penceresi işliyorsa başka
            (0,0) sol üst köşede.
    -o FILENAME
            Çıktı dosya adı, eğer değilse, resim kaydedilecektir.
            Mevcut çalışma dizininde "screenshot.png" olarak.
    -h
            Bu yardım bilgisini gösterir.

İlham veren: http://blog.mozilla.com/ted/2009/02/05/command-line-screenshot-tool-for-windows/


1
Bu açık kaynak kodlu, BSD lisansı. Çok basit ve küçük - benim için bunlar avantaj.
Jarekczek

2

PillowBirincil monitörün ekran görüntülerini almak için python kütüphanesini kullanabilirsiniz.

Adım 1: Yastık yükleyin:

pip install -user pillow

Adım 2: Aşağıdaki kodla ekran görüntülerini alın:

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

1
İlk önce görüntüleyici çözümü denedim, ama o Python kodunun bir parçasını gördüğümde, etkileşimli bir Python CLI'de denedim ve bir saniye sonra mutlu oldum! Teşekkür!!
domih,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.