Có một lệnh có thể được sử dụng từ dòng lệnh để xuất ra một danh sách các máy in được cài đặt và vị trí của chúng, nếu được ánh xạ, vào một tệp văn bản? Hoặc có lẽ một chương trình mà tôi có thể chạy từ dòng lệnh sẽ làm điều này?
Có một lệnh có thể được sử dụng từ dòng lệnh để xuất ra một danh sách các máy in được cài đặt và vị trí của chúng, nếu được ánh xạ, vào một tệp văn bản? Hoặc có lẽ một chương trình mà tôi có thể chạy từ dòng lệnh sẽ làm điều này?
Câu trả lời:
Trong Windows XP, sử dụng prntmngr:
PRNMNGR -l >> C:\printers.txt
Trong Windows Vista và hơn thế nữa, hãy sử dụng PowerShell:
get-WmiObject -class Win32_printer | ft name, systemName, shareName >> c:\printers.txt
Lưu ý: Bạn có thể gặp lỗi nếu bạn cố ghi tệp vào C: \ trên Vista +, tùy thuộc vào quyền của bạn và cách PowerShell được sinh ra.
Đối với Windows 2000:
Tệp PrnMngr.vbs từ XP (nằm trong thư mục / Windows / System32) hoạt động trên Windows 2000. Chỉ cần tìm và sao chép nó sang máy 2000 từ máy XP và chạy nó với:
cscript prnmngr.vbs -l >> c:\printers.txt
Tôi thấy rằng nó sẽ không chạy từ máy tính để bàn của người dùng của tôi vì một số lý do, nhưng khi tôi sao chép .VBS vào thư mục gốc của C: nó chạy tốt.
Tôi sử dụng:
wmic printer list brief
HOẶC LÀ
wmic printer get name
Điều này chỉ hiển thị một danh sách ngắn của máy in được gắn vào hệ thống bạn chạy lệnh trên. Nó cũng sẽ hiển thị máy tính nào được kết nối với máy tính nếu có máy in mạng.
Bạn cũng có thể sử dụng điều này để có được danh sách cấu hình rất chi tiết cho từng máy in được cài đặt trên một hệ thống:
wmic printer list full
Để xuất nó thành tệp văn bản, hãy thêm phần này vào cuối lệnh:
>>"[directory]\[filename].txt"
Thí dụ:
wmic printer list brief >> c:\users\admin\documents\printerlist.txt
Đôi khi bạn không muốn sử dụng PS trong win7 (Tôi có một ứng dụng cho phép tôi thực hiện công việc quản trị ở chế độ nền trên PC từ xa, nhưng nó không sử dụng powershell). Các kịch bản cơ bản trực quan XP được đề cập có thể được tìm thấy trong thư mục sau cho Win7:
C:\Windows\System32\Printing_Admin_Scripts\en-US
Bắt đầu với Windows 8 / Server 2012, có một get-printer
lệnh ghép ngắn PowerShell:
https://technet.microsoft.com/en-us/l Library / hh91858%28v = wps.630% 29
Vì vậy, đây là giải pháp của tôi:
;******************
;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
Sử dụng Powershell.
[System.Drawing.Printing.PrinterSettings]::InstalledPrinters