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

Liste des imprimantes de la ligne de commande au fichier texte

Advertisement

Existe-t-il une commande qui peut être utilisée à partir de la ligne de commande pour produire une liste des imprimantes installées et de leur emplacement, si elles sont mappées, dans un fichier texte ? Ou peut-être un programme que je peux exécuter à partir de la ligne de commande qui ferait cela ?

Advertisement

Réponses (7)

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

Dans Windows XP, utilisez prntmngr :

PRNMNGR -l >> C:\printers.txt

Dans Windows Vista et au-delà, utilisez PowerShell :

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

Note : Vous POURRIEZ obtenir une erreur si vous tentez d'écrire le fichier dans C:\ sur Vista+, en fonction de vos droits, et de la façon 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 trouver et de le copier sur la machine 2000 à partir d'une machine XP et de l'exécuter avec :

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

J'ai découvert qu'il ne fonctionnerait pas sur le bureau de mon utilisateur pour une raison quelconque, mais lorsque j'ai copié le fichier .VBS à la racine du C : il fonctionnait correctement.

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

J'utilise :

wmic printer list brief

OR

wmic printer get name

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

Vous pouvez également utiliser cette commande 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 l'éditer 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
4
Advertisement
4
4
2014-04-16 14:09:17 +0000

Parfois, vous ne voulez pas utiliser PS dans win7 (j'ai une application qui me permet de faire du travail administratif en arrière-plan sur des PC distants, mais elle n'utilise pas powerhell). Les scripts de base visuels XP mentionnés se trouvent dans le dossier suivant pour 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, il y a un cmdlet get-printer PowerShell : https://technet.microsoft.com/en-us/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396

1
Advertisement
1
1
2013-03-08 17:19:12 +0000

Note : Pour Windows XP, veillez à changer l'hôte du script par défaut pour CScript d'abord

C:\CScript //H:CScript

sinon vous recevrez un message vous disant de le faire et votre fichier printers.txt sera vide.

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

Utilisez Powershell.

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

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

C'est donc 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
Advertisement