Вывести список принтеров из командной строки в текстовый файл

30

Есть ли команда, которую можно использовать из командной строки для вывода списка установленных принтеров и их расположения, если они сопоставлены, в текстовый файл? Или, может быть, программа, которую я могу запустить из командной строки, которая будет делать это?

Der Hochstapler
источник

Ответы:

28

В Windows XP используйте prntmngr:

PRNMNGR -l >> C:\printers.txt

В Windows Vista и более поздних версиях используйте PowerShell:

get-WmiObject -class Win32_printer | ft name, systemName, shareName >> c:\printers.txt

Примечание: вы МОЖЕТЕ получить сообщение об ошибке, если попытаетесь записать файл в C: \ на Vista +, в зависимости от ваших прав и способа создания PowerShell.

Для Windows 2000:

Файл PrnMngr.vbs из XP (расположенный в папке / Windows / System32) работает в Windows 2000. Просто найдите и скопируйте его на компьютер 2000 с компьютера XP и запустите его с:

cscript prnmngr.vbs -l >> c:\printers.txt

Я обнаружил, что он не запускается с рабочего стола моего пользователя по какой-то причине, но когда я скопировал .VBS в корень C: он работал нормально.

Wesley
источник
Работал красиво!
15

Я использую:

wmic printer list brief

ИЛИ ЖЕ

wmic printer get name

Это просто показывает краткий список принтеров, подключенных к системе, на которой вы запускаете команду. Он также покажет, к какому компьютеру подключен принтер, если есть сетевой принтер.

Вы также можете использовать это, чтобы получить очень подробный список конфигурации для каждого принтера, установленного в системе:

wmic printer list full

Чтобы вывести его в текстовый файл, добавьте его в конец команды:

 >>"[directory]\[filename].txt"

Пример:

wmic printer list brief >> c:\users\admin\documents\printerlist.txt
Мэтт Стоддард
источник
Это должен быть принятый ответ.
Джеймс Дрейпер
4

Иногда вы не хотите использовать PS в win7 (у меня есть приложение, которое позволяет мне выполнять административную работу в фоновом режиме на удаленных ПК, но оно не использует powershell). Упомянутые скрипты Visual Basic XP могут быть найдены в следующей папке для Win7:

C:\Windows\System32\Printing_Admin_Scripts\en-US
Андрей
источник
2

Начиная с Windows 8 / Server 2012, существует get-printerкомандлет PowerShell:

https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396

hmqcnoesy
источник
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Канадский Люк
1

Примечание: для Windows XP, сначала измените хост скрипта по умолчанию на CScript

C:\CScript //H:CScript

в противном случае вы получите сообщение с указанием сделать это, и ваш файл printers.txt будет пустым.

ЦБС
источник
0

так что это мое решение:

;******************
;ALLOCATING CONSOLE
;******************
; cmd calls hidden

global cPid
DetectHiddenWindows, on
Run, %comspec% /k ,,Hide UseErrorLevel,cPid
WinWait, ahk_pid %cPid%,, 1
DllCall("AttachConsole","uint",cPid)
hCon:=DllCall("CreateFile","str","CONOUT$","uint",0xC0000000,"uint",7,"uint",0,"uint",3,"uint",0,"uint",0)


;******* GET PRINTER NAMES **********

AllPrintersNameClearArray := strSplit(StrReplace(StrReplace(StrReplace(StrReplace("|" StrReplace(StrReplace(StrReplace(RunWaitOne("wmic printer get name"),"  ","")," `r",""),"`r",""),"|NAME`n",""),"`n","|"),"||","",All),"|","`n"),"`n")

RunWaitOne(command) {

    objShell := ComObjCreate("WScript.Shell")
    objExec := objShell.Exec(command)
    strStdOut := ""
    while, !objExec.StdOut.AtEndOfStream
    strStdOut := objExec.StdOut.ReadAll()
    return %strStdOut%
}

; **** Clean at the end *****

Finish:
DllCall("CloseHandle", "uint", hCon)
DllCall("FreeConsole")
Process, Close, %cPid%
ExitApp
return
Rightcelebrator
источник
0

Используйте Powershell.

[System.Drawing.Printing.PrinterSettings]::InstalledPrinters

стомия
источник
Добро пожаловать в Супер пользователя. Можете ли вы сказать что-то большее, чем это? Хотя я думаю, что это технически ответ, он многое оставляет для воображения и поэтому не является качественным ответом.
Twisty Impersonator