Список принтерів від командного рядка до текстового файлу


30

Чи є команда, яку можна використовувати з командного рядка для виведення списку встановлених принтерів та їх розташування, якщо їх відображено, у текстовий файл? Або, можливо, програма, яку я можу запустити з командного рядка, яка б це зробила?

Відповіді:


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: він працював нормально.


Працювали красиво!

17

Я використовую:

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

1
Це має бути прийнятою відповіддю.
Джеймс Дрейпер

4

Іноді ви не хочете використовувати PS в win7 (у мене є додаток, який дозволяє мені виконувати адміністративні роботи у фоновому режимі на віддалених ПК, але він не використовує powerhell). Згадані базові сценарії XP Visual можна знайти в наступній папці для 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


Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Канадський Люк ВІДНОВЛЕННЯ МОНИЦИ

1

Примітка. Для Windows XP спочатку змініть хост сценарію за замовчуванням на CScript

C:\CScript //H:CScript

інакше ви отримаєте повідомлення про те, що вам потрібно зробити це, і файл принтера.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

0

Використовуйте Powershell.

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


Ласкаво просимо до Супер Користувача. Ви можете сказати щось більше, ніж це? Хоча я думаю, що це технічно відповідь, це залишає багато для уяви, і як таке не є якісною відповіддю.
Кажу відновити Моніку
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.