从命令行到文本文件列出打印机


30

是否可以从命令行使用命令将已安装打印机及其位置(如果已映射)的列表输出到文本文件?还是我可以从命令行运行的程序可以做到这一点?

Answers:


28

在Windows XP中,使用prntmngr:

PRNMNGR -l >> C:\printers.txt

在Windows Vista及更高版本中,使用PowerShell:

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

注意:如果您尝试将文件写入Vista +上的C:\,则可能会出错,具体取决于您的权限以及生成PowerShell的方式。

对于Windows 2000:

XP中的PrnMngr.vbs文件(位于/ Windows / System32文件夹中)在Windows 2000上可以使用。只需从XP计算机中找到并将其复制到2000计算机上,然后使用以下命令运行它:

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

我发现由于某种原因它无法从用户的桌面运行,但是当我将.VBS复制到C的根目录时:它运行良好。


做工精美!

17

我用:

wmic printer list brief

要么

wmic printer get name

这只是显示连接到运行命令的系统的打印机的简短列表。如果有网络打印机,还将显示打印机连接到的计算机。

您还可以使用它来获取系统上安装的每台打印机的非常详细的配置列表:

wmic printer list full

要将其输出到文本文件,请将其附加到命令末尾:

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

例:

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

1
这应该是公认的答案。
James Draper

4

有时您不想在win7中使用PS(我有一个应用程序可以让我在远程PC的后台进行管理工作,但它不使用Powershell)。可以在Win7的以下文件夹中找到提到的XP视觉基本脚本:

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


1

注意:对于Windows XP,请务必先将默认脚本主机更改为CScript。

C:\CScript //H:CScript

否则,您会收到一条消息,提示您这样做,并且printers.txt文件将为空白。


0

所以这是我的解决方案:

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

使用Powershell。

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


欢迎来到超级用户。你还能说些什么吗?虽然我认为从技术上讲这是一个答案,但它给我们留下了很多想像力,因此这不是一个高质量的答案。
我说恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.