แสดงรายการเครื่องพิมพ์จากบรรทัดคำสั่งไปยังไฟล์ข้อความ


30

มีคำสั่งที่สามารถใช้จากบรรทัดคำสั่งเพื่อแสดงรายการของเครื่องพิมพ์ที่ติดตั้งและตำแหน่งของมันหากถูกแมปไปยังไฟล์ข้อความหรือไม่? หรืออาจเป็นโปรแกรมที่ฉันสามารถเรียกใช้จากบรรทัดคำสั่งที่จะทำเช่นนี้?

คำตอบ:


28

ใน Windows XP ให้ใช้ prntmngr:

PRNMNGR -l >> C:\printers.txt

ใน Windows Vista และอื่น ๆ ให้ใช้ PowerShell:

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

หมายเหตุ: คุณอาจได้รับข้อผิดพลาดหากคุณพยายามเขียนไฟล์ไปยัง C: \ บน Vista + ขึ้นอยู่กับสิทธิ์ของคุณและวิธีที่ PowerShell ถูกวางไข่

สำหรับ Windows 2000:

ไฟล์ PrnMngr.vbs จาก XP (อยู่ในโฟลเดอร์ / Windows / System32) ทำงานบน Windows 2000 เพียงค้นหาและคัดลอกไปยังเครื่อง 2000 จากเครื่อง XP และรันด้วย:

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

บางครั้งคุณไม่ต้องการใช้ PS ใน win7 (ฉันมีแอปพลิเคชันที่ให้ฉันทำงานด้านการดูแลระบบในพื้นหลังบนพีซีระยะไกล แต่ไม่ใช้ PowerShell) สคริปต์พื้นฐานของ visual XP ที่กล่าวถึงสามารถพบได้ในโฟลเดอร์ต่อไปนี้สำหรับ Win7:

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

2

เริ่มต้นด้วย Windows 8 / Server 2012 มีget-printerPowerShell cmdlet:

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


ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Canadian Luke ติดตั้ง MONICA ใหม่

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


ยินดีต้อนรับสู่ Super User คุณสามารถพูดอะไรได้มากกว่านี้? ในขณะที่ฉันคิดว่านี่เป็นคำตอบทางเทคนิค แต่ก็ทำให้เกิดจินตนาการมากมายและนั่นไม่ใช่คำตอบที่มีคุณภาพสูง
ฉันพูดว่า Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.