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

Lista de impresoras desde la línea de comandos a un archivo de texto

¿Existe un comando que se pueda utilizar desde la línea de comandos para obtener una lista de las impresoras instaladas y su ubicación, si está asignada, en un archivo de texto? ¿O quizás un programa que pueda ejecutar desde la línea de comandos que haga esto?

Respuestas (7)

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

En Windows XP utilice prntmngr:

PRNMNGR -l >> C:\printers.txt

En Windows Vista y posteriores, utilice PowerShell:

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

Nota: Puede obtener un error si intenta escribir el archivo en C:\ en Vista+, dependiendo de sus derechos, y de cómo se haya generado PowerShell.

Para Windows 2000:

El archivo PrnMngr.vbs de XP (ubicado en la carpeta /Windows/System32) funciona en Windows 2000. Sólo hay que buscarlo y copiarlo a la máquina 2000 desde una máquina XP y ejecutarlo con:

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

Encontré que no se ejecutaba desde el escritorio de mi usuario por alguna razón, pero cuando copié el .VBS a la raíz de C: se ejecutó bien.

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

Yo uso:

wmic printer list brief

O

wmic printer get name

Esto sólo muestra una breve lista de impresoras conectadas al sistema en el que ejecutas el comando. También mostrará a qué ordenador está conectada una impresora si hay una impresora de red.

También puede utilizarlo para obtener una lista muy detallada de la configuración de cada impresora instalada en un sistema:

wmic printer list full

Para enviarla a un archivo de texto, añada esto al final del comando:

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

Ejemplo:

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

A veces no quieres usar PS en win7 (tengo una aplicación que me permite hacer trabajo administrativo en segundo plano en PCs remotos, pero no usa powershell). Los scripts de visual basic de XP mencionados se encuentran en la siguiente carpeta para Win7:

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

A partir de Windows 8 / Server 2012, existe un cmdlet get-printer de 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: En el caso de Windows XP, asegúrese de cambiar primero el host de script por defecto a CScript

C:\CScript //H:CScript

de lo contrario recibirá un mensaje indicándole que lo haga y su archivo printers.txt estará en blanco.

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

Usa Powershell.

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

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

así que esta es mi solución:

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