2010-04-28 02:47:03 +0000 2010-04-28 02:47:03 +0000
30
30

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

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

Ответы (7)

28
28
28
2010-04-28 03:18:35 +0000

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

PRNMNGR -l >> C:\printers.txt

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

Примечание: Вы ДОЛЖНЫ получить ошибку, если попытаетесь записать файл на C:\ на Vista+, в зависимости от ваших прав, и от того, как была создана PowerShell.

Для Windows 2000:

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

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

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

18
18
18
2017-05-11 18:44:28 +0000

Я использую:

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
4
4
2014-04-16 14:09:17 +0000

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

C:\Windows\System32\Printing_Admin_Scripts\en-US
2
2
2
2016-08-03 19:56:20 +0000

Начиная с Windows 8 / Server 2012, есть команда 0x6 & PowerShell: https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396

1
1
1
2013-03-08 17:19:12 +0000

Примечание: Для Windows XP не забудьте сначала изменить хост сценария по умолчанию на CScript

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

0
0
0
2019-04-17 19:50:16 +0000

Используй Powershell.

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

0
0
0
2018-07-06 15:48:07 +0000

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

; ******************
;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

Похожие вопросы

3
19
10
28
5