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

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

是否有一个命令可以从命令行输出已安装的打印机列表及其位置(如果映射)到文本文件?或者我可以从命令行中运行一个程序来完成这项工作?

答案 (7)

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

在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中的PlnMngr.vbs文件(位于/Windows/System32文件夹中)在Windows 2000中可以工作。只要找到它并将其从XP机器复制到2000机器上,然后运行它。

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

我发现在我的用户桌面上由于某种原因无法运行,但当我把.VBS复制到C的根目录下时,它运行得很好。

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

我使用的是

wmic printer list brief

OR

wmic printer get name

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

你也可以用它来获取系统上安装的每台打印机的详细配置列表。

wmic printer list full

要将其输出到文本文件,请在命令末尾加上这个。

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

示例:

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

有时你不想在win7中使用PS(我有一个应用程序可以让我在后台对远程电脑进行管理,但它不使用powershell)。所提到的XP visual basic脚本可以在Win7的以下文件夹中找到:

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

从Windows 8 / Server 2012开始,有一个get-printer PowerShell cmdlet。 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

注意:对于Windows XP,一定要先将默认脚本主机改为CScript

C:\CScript //H:CScript

,否则你会收到一条消息,告诉你这样做,你的printers.txt文件将是空白。

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

使用Powershell。

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

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

所以这是我的解决方案。

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