web-dev-qa-db-fra.com

Répertoriez les imprimantes de la ligne de commande au fichier texte

Existe-t-il une commande pouvant être utilisée à partir de la ligne de commande pour générer une liste des imprimantes installées et leur emplacement, s'ils sont mappés, dans un fichier texte? Ou peut-être un programme que je peux exécuter à partir de la ligne de commande pour le faire?

30
user35406

Sous Windows XP, utilisez prntmngr:

PRNMNGR -l >> C:\printers.txt

Dans Windows Vista et les versions ultérieures, utilisez PowerShell:

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

Remarque: Vous POUVEZ obtenir une erreur si vous tentez d'écrire le fichier dans C:\sous Vista +, en fonction de vos droits et de la manière dont PowerShell a été créé.

Pour Windows 2000:

Le fichier PrnMngr.vbs de XP (situé dans le dossier/Windows/System32) fonctionne sous Windows 2000. Il suffit de le rechercher et de le copier sur la machine 2000 à partir d'une machine XP et lancez-le avec:

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

J'ai trouvé qu'il ne fonctionnerait pas du bureau de mon utilisateur pour une raison quelconque, mais lorsque j'ai copié le fichier .VBS à la racine de C: tout s'est bien déroulé.

28
Wesley

J'utilise:

wmic printer list brief

OR

wmic printer get name

Cela montre juste une courte liste des imprimantes connectées au système sur lequel vous exécutez la commande. Il montrera également à quel ordinateur une imprimante est connectée s'il y a une imprimante réseau.

Vous pouvez également l'utiliser pour obtenir une liste très détaillée de la configuration de chaque imprimante installée sur un système:

wmic printer list full

Pour le sortir dans un fichier texte, ajoutez ceci à la fin de la commande:

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

Exemple:

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

Parfois, vous ne voulez pas utiliser PS dans win7 (j'ai une application qui me permet d'effectuer des tâches administratives en arrière-plan sur des ordinateurs distants, mais elle n'utilise pas Powershell). Les scripts Visual Basic XP mentionnés peuvent être trouvés dans le dossier suivant pour Win7:

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

À partir de Windows 8/Server 2012, il existe une cmdlet get-printer PowerShell:

https://technet.Microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396

2
hmqcnoesy

Remarque: pour Windows XP, veillez à modifier le script hôte par défaut en CScript en premier.

C:\CScript //H:CScript

sinon, vous recevrez un message vous invitant à le faire et votre fichier printers.txt sera vide.

1
cls

Utilisez Powershell.

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

0
stomy

alors voici ma solution:

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