มีคำสั่งที่สามารถใช้จากบรรทัดคำสั่งเพื่อแสดงรายการของเครื่องพิมพ์ที่ติดตั้งและตำแหน่งของมันหากถูกแมปไปยังไฟล์ข้อความหรือไม่? หรืออาจเป็นโปรแกรมที่ฉันสามารถเรียกใช้จากบรรทัดคำสั่งที่จะทำเช่นนี้?
มีคำสั่งที่สามารถใช้จากบรรทัดคำสั่งเพื่อแสดงรายการของเครื่องพิมพ์ที่ติดตั้งและตำแหน่งของมันหากถูกแมปไปยังไฟล์ข้อความหรือไม่? หรืออาจเป็นโปรแกรมที่ฉันสามารถเรียกใช้จากบรรทัดคำสั่งที่จะทำเช่นนี้?
คำตอบ:
ใน 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: มันก็ทำงานได้ดี
ฉันใช้:
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
บางครั้งคุณไม่ต้องการใช้ PS ใน win7 (ฉันมีแอปพลิเคชันที่ให้ฉันทำงานด้านการดูแลระบบในพื้นหลังบนพีซีระยะไกล แต่ไม่ใช้ PowerShell) สคริปต์พื้นฐานของ visual XP ที่กล่าวถึงสามารถพบได้ในโฟลเดอร์ต่อไปนี้สำหรับ Win7:
C:\Windows\System32\Printing_Admin_Scripts\en-US
เริ่มต้นด้วย 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
หมายเหตุ: สำหรับ Windows XP ต้องแน่ใจว่าเปลี่ยนโฮสต์สคริปต์เริ่มต้นเป็น CScript ก่อน
C:\CScript //H:CScript
มิฉะนั้นคุณจะได้รับข้อความแจ้งให้คุณทำเช่นนั้นและไฟล์ printers.txt ของคุณจะว่างเปล่า
ดังนั้นนี่คือทางออกของฉัน:
;******************
;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
ใช้ Powershell
[System.Drawing.Printing.PrinterSettings]::InstalledPrinters