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

Listagem de impressoras de linha de comando para ficheiro de texto

Existe algum comando que possa ser utilizado a partir da linha de comando para produzir uma lista das impressoras instaladas e a sua localização, se mapeada, para um ficheiro de texto? Ou talvez um programa que eu possa executar a partir da linha de comando que o faria?

Respostas (7)

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

No Windows XP usar prntmngr:

PRNMNGR -l >> C:\printers.txt

No Windows Vista e mais além, usar PowerShell:

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

Nota: Poderá receber um erro se tentar escrever o ficheiro em C:\ no Vista+, dependendo dos seus direitos, e de como PowerShell foi gerado.

Para Windows 2000:

O ficheiro PrnMngr.vbs de XP (localizado na pasta /Windows/System32) funciona no Windows 2000. Basta encontrá-lo e copiá-lo para a máquina 2000 a partir de uma máquina XP e executá-lo com ela:

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

Descobri que não funcionava a partir do ambiente de trabalho do meu utilizador por alguma razão, mas quando copiei o .VBS para a raiz de C: funcionava bem.

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

Eu uso:

wmic printer list brief
wmic printer get name

Isto mostra apenas uma pequena lista de impressoras anexadas ao sistema em que se executa o comando. Mostrará também a que computador uma impressora está ligada se houver uma impressora em rede.

Também pode usar isto para obter uma lista muito detalhada de configuração para cada impressora instalada num sistema:

wmic printer list full

Para a emitir para um ficheiro de texto, anexar isto ao fim do comando:

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

Exemplo:

wmic printer list brief >> c:\users\admin\documents\printerlist.txt
4
4
4
2014-04-16 14:09:17 +0000

Por vezes não se quer usar PS em win7 (tenho uma aplicação que me permite fazer trabalho administrativo em segundo plano em computadores remotos, mas não usa powerhell). Os scripts visuais básicos XP mencionados podem ser encontrados na seguinte pasta para Win7:

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

Começando com Windows 8 / Server 2012, existe uma cmdlet get-printer 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

Nota: Para Windows XP, não se esqueça de alterar o anfitrião de scripts por defeito para CScript primeiro

C:\CScript //H:CScript

senão receberá uma mensagem a dizer-lhe para o fazer e o seu ficheiro printers.txt ficará em branco.

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

Usar o Powershell.

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

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

por isso, esta é a minha solução:

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