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

Elenca le stampanti dalla linea di comando al file di testo

C'è un comando che può essere usato dalla linea di comando per produrre un elenco delle stampanti installate e la loro posizione, se mappate, in un file di testo? O forse un programma che posso eseguire dalla riga di comando per fare questo?

Risposte (7)

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

In Windows XP usa 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: Potresti ottenere un errore se cerchi di scrivere il file in C:\ su Vista+, a seconda dei tuoi diritti e di come PowerShell è stato generato.

Per Windows 2000:

Il file PrnMngr.vbs di XP (situato 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 funzionava dal desktop del mio utente per qualche motivo, ma quando ho copiato il .VBS nella root di C: ha funzionato bene.

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

Io uso:

wmic printer list brief

O

wmic printer get name

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

Puoi anche usarlo per ottenere una lista molto dettagliata della configurazione per ogni stampante installata su un sistema:

wmic printer list full

Per inviarlo a un file di testo, aggiungi questo alla fine del comando:

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

Esempio:

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

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

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

A partire da Windows 8 / Server 2012, c'è un 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: per Windows XP, assicuratevi di cambiare prima lo script host di default in CScript

C:\CScript //H:CScript

altrimenti riceverete un messaggio che vi dice di farlo e il vostro file printers.txt sarà vuoto.

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

Usare Powershell.

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

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

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