Зробіть знімок екрана з командного рядка в Windows


51

Я шукаю спосіб зробити знімок екрана всього екрану з командного рядка. Операційною системою є Windows. Щось на зразок цього:

C:\>screenshot.exe screen1.png

1
Чому б ти хотів зробити щось подібне? Крім очевидного недоліку (це можливість робити скріншоти лише з командного рядка, над яким ви зараз працюєте), що не так з "регулярними" рішеннями для такої мети?
Грак

7
Чому було б обмежено фотографувати лише лінію cmd? Я думаю, питання йде більше за напрямками автоматизації.
Герд Кліма

Ну, в момент, коли він хоче зробити знімок екрана, він повинен натиснути клавішу Enter, щоб дати команду, чи не так? Він, звичайно, міг використовувати сценарій, щоб активувати його часом, але тоді він справді винаходив гарячу воду.
Корінь

Я хотів би написати сценарій, який відкриває файл eml у Thunderbird, робить знімок екрана, відкриває ще один файл, робить ще один знімок екрана ... Для всіх файлів у папці. Я хочу виконати інструмент знімка екрана з командного рядка, щоб його можна було автоматизувати. Щоб було зрозуміло, я хочу не робити знімок екрана командного рядка, а весь екран. Насправді сценарій я вже написав, я просто шукаю більше варіантів, щоб зробити знімок екрана.
Желько Філіпін

2
@Idigias: по-перше, екран більше, ніж вікно CMD, але по-друге: коли сценарій запускає інструмент GUI, цей інструмент GUI зосереджується. Отже, ваш "очевидний дефіцит" не очевидний, а також недолік. Ви коли-небудь працювали з командним рядком?
tvCa

Відповіді:


26

Завантажте imagemagick . Багато інструментів для управління зображеннями командного рядка включені. імпорт дозволяє захоплювати деякий або весь екран і зберігати зображення у файлі. Наприклад, щоб зберегти весь екран у форматі jpeg:

import -window root screen.jpeg

Якщо ви хочете за допомогою миші натиснути всередині вікна або вибрати область екрана та зберегти aa png, просто скористайтеся:

import box.png

13
Схоже, це не працює в Windows. Я отримую помилку X сервера щодо файлу не знайдено.
Бінарний Філі

2
@BinaryPhile Так, я думаю, що це працюватиме лише з X-сервером, який працює на Cygwin.
CMCDragonkai

Це все ще не працює для мене. Я отримую скріншот, але відображаються (як очікувалося) лише додатки X.
reinierpost

хм, ImageMagick становить 25 Мб, і робить TON класних матеріалів. screenCapture.bat, нижче, становить 9 Кб, і просто робить саме те, що вимагала ОП. На .04% розмір ImageMagick.
Джоні, чому

41

На це запитання вже відповіли, але я подумав, що також піду. NirCmd (безкоштовно, на жаль, не з відкритим кодом) може робити знімки екрану з командного рядка в поєднанні з численними іншими функціями, які він може виконувати.

Запустивши це з командного рядка або в каталозі nircmd.exe, або якщо ви скопіювали його в папку system32:

nircmd.exe savescreenshot screen1.png

робить те, що ти хочеш. Ви також можете затримати його так:

nircmd.exe cmdwait 2000 savescreenshot screen1.png

Це зачекає 2000 мілісекунд (2 секунди), а потім захопить і збереже знімок екрана.


Nircmdне підтримує кілька екранів. Він буде захоплювати лише основний екран.
Томас Веллер

1
Схоже, що останні версії можуть робити кілька екранів. savescreenshotfull [ім'я файлу]
w32sh

Я не зміг знайти посилання для завантаження nircmd2 спочатку. Пошук у Google нічого не показав. Для користувачів, які бажають завантажити nircmd2, посилання для завантаження знаходиться внизу сторінки nirsoft.net/utils/nircmd.html . Ви можете безпосередньо скористатися цим посиланням для завантаження: nirsoft.net/utils/nircmd.zip
alpha_989

17

це можна зробити без зовнішніх інструментів (вам просто потрібно встановити .net Framework, який встановлений за замовчуванням на все, починаючи з Vista і вище) - screenCapture.bat . Це самокомпільована програма C #, і ви можете зберегти вихід у кількох форматах і захопити лише активне вікно або весь екран:

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

Приклади:

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

2
Однозначно найкраще рішення. Супер крихітні 9K! Це на 0,04% розмір ImageMagick (25 Мб). Він використовує вбудований функціонал Windows. Тіньше, ніж всі інші рішення на цій сторінці. Найкраще!
Джоні, чому

1
Одне, що я помітив щодо цього рішення, - це те, що є конкретні речі, які він не захоплює. Наприклад, деякі додатки приєднуються до себе та створюють клуби для інших додатків, які не відображаються у захопленому зображенні. У тих крайніх випадках я виявив, що MiniCap працює. Однак у більшості випадків це рішення саме тут є найшвидшим та найскладнішим, що ви можете знайти.
F1234k

Привіт @ npocmaka, у мене є два монітора, що на них розширений робочий стіл. Я хочу зробити скріншот робочого столу другого монітора. Але ваша програма просто знімає скріншоти з основного робочого столу. Якась хитрість?
міні

@mini - ви можете редагувати c # частину сценарію за допомогою цього . Спробую додати додати це у вихідні
npocmaka

@ npocmaka, Оскільки я не знайомий із C #, я буду чекати вашого оновлення. Дуже дякую.
міні

13

Інші пропозиції є чудовими - ви також можете спробувати MiniCap, який є безкоштовним та має деякі інші функції, такі як гнучка назва файлів та різні режими зйомки: http://www.donationcoder.com/Software/Mouser/MiniCap/index.html

(відмова: Я є автором MiniCap).


1
Тоді ви також повинні бути автором екрана екрана. Я знайшов це кращим рішенням для моїх потреб. Дякую!
jon3laze

1
Це безкоштовно лише для особистого користування. Для комерційного використання потрібна ліцензія на знімок екрана.
Томас Веллер

9

Спробуйте IrfanView .

Ви можете запустити його за допомогою командного рядка. Ви можете вказати, яке вікно для зйомки - наприклад, ціле вікно або просто поточне / активне вікно - і ви також можете виконати основні редагування, такі як різкість, обрізання або зміна розміру зображень.

Ось варіанти командного рядка , особливо цікавим є

i_view32 /capture=0 /convert=wholescreen.png

6

Ви можете спробувати інструмент " боксер" :

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

Цей підтримує кілька моніторів, але додає додаткову чорну зону у версії 1.5
Томас Веллер

Для тих, хто цікавиться компактністю, Boxboxter складає всього 22K для повноекранного .exe і 502K для звичайного .exe. Це з відкритим кодом. Для мене чудово працює.
frakman1

6

Знімок екрана-cmd робить знімок екрана робочого столу чи будь-якого вікна, вибраного за заголовком вікна. Також можливо вибрати прямокутник для зйомки. Результат зберігається у форматі png. (останнє оновлення у 2011 році)

ВАРІАНТИ:
    -wt WINDOW_TITLE
            Виберіть вікно з цією назвою.
            Заголовок не повинен містити пробілів ("").
    -hh WINDOW_HANDLE
            Виберіть вікно за його ручкою
            (представлений як шістнадцятковий рядок - fe "0012079E") 
    -rc ЛІВНІЙ верхній правий край
            Обрізне джерело. Якщо WINDOW_TITLE не надано
            (0,0) лівий верхній кут робочого столу,
            інше, якщо WINDOW_TITLE керує вікном робочого столу
            (0,0) - це верхній лівий кут.
    -о FILENAME
            Назва вихідного файлу, якщо його немає, зображення буде збережено
            як "screenshot.png" у поточному робочому каталозі.
    -х
            Показує цю довідкову інформацію.

Натхненно: http://blog.mozilla.com/ted/2009/02/05/command-line-screenshot-tool-for-windows/


1
Це відкритий код, ліцензія BSD. Дуже просто і мало - для мене це переваги.
Jarekczek

2

Ви можете використовувати Pillowбібліотеку python, щоб робити знімки екрана основного монітора

Крок 1: встановіть Подушку:

pip install -user pillow

Крок 2: Зробіть знімки екрана із таким кодом:

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

1
Спершу я спробував імагематичне рішення, але коли я побачив цю частину коду Python, я спробував це в інтерактивному Python CLI, а через секунду я був щасливий! Дякую!!
domih

1

Ви можете скористатися комерційним оснащенням продуктів, щоб зробити приголомшливі знімки екрана з командного рядка.


2
Зараз це комерційний продукт , потребує .NET і не випускається для Windows 7 ++. Посилання, вказане у відповіді, повертає HTTP 404.
Томас Веллер

Так, репортажу GitHub не існує.
alpha_989
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.