26

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

6 ответов6

25

В 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: он работал нормально.

11

Я использую:

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
1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .