Elencare le stampanti dalla riga di comando al file di testo


30

Esiste un comando che può essere utilizzato dalla riga di comando per generare un elenco delle stampanti installate e la loro posizione, se mappata, in un file di testo? O forse un programma che posso eseguire dalla riga di comando che farebbe questo?

Risposte:


28

In Windows XP utilizzare prntmngr:

PRNMNGR -l >> C:\printers.txt

In Windows Vista e oltre, usa PowerShell:

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

Nota: È possibile che venga visualizzato un errore se si tenta di scrivere il file in C: \ su Vista +, in base ai propri diritti e alla modalità di generazione di PowerShell.

Per Windows 2000:

Il file PrnMngr.vbs da XP (che si trova nella cartella / Windows / System32) funziona su Windows 2000. Basta trovarlo e copiarlo sulla macchina 2000 da una macchina XP ed eseguirlo con:

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

Ho scoperto che non funzionerebbe dal desktop del mio utente per qualche motivo, ma quando ho copiato il .VBS nella radice di C: funzionava bene.


Ha funzionato magnificamente!

17

Io uso:

wmic printer list brief

O

wmic printer get name

Questo mostra solo un breve elenco di stampanti collegate al sistema su cui si esegue il comando. Mostrerà anche a quale computer è connessa una stampante se c'è una stampante di rete.

Puoi anche usare questo per ottenere un elenco molto dettagliato di configurazione per ogni stampante installata su un sistema:

wmic printer list full

Per emetterlo in un file di testo, aggiungilo alla fine del comando:

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

Esempio:

wmic printer list brief >> c:\users\admin\documents\printerlist.txt

1
Questa dovrebbe essere la risposta accettata.
James Draper,

4

A volte non vuoi usare PS in win7 (ho un'applicazione che mi permette di fare un lavoro amministrativo in background su PC remoti, ma non usa PowerShell). Gli script di Visual Basic XP menzionati si trovano nella seguente cartella per Win7:

C:\Windows\System32\Printing_Admin_Scripts\en-US


1

Nota: per Windows XP, assicurarsi di modificare prima l'host di script predefinito in CScript

C:\CScript //H:CScript

altrimenti riceverai un messaggio che ti dice di farlo e il tuo file printers.txt sarà vuoto.


0

quindi questa è la mia soluzione:

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

Usa Powershell.

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


Benvenuto in Super User. Puoi dire altro? Mentre penso che questa sia tecnicamente una risposta, lascia molto all'immaginazione e come tale non è una risposta di alta qualità.
Dico Reinstate Monica il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.