Liệt kê các máy in từ dòng lệnh đến tệp văn bản


30

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:


28

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.


Làm việc rất đẹp!

15

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

Đây phải là câu trả lời được chấp nhận.
James Draper

4

Đô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


1

Lưu ý: Đối với Windows XP, trước tiên hãy đảm bảo thay đổi máy chủ tập lệnh mặc định thành CScript

C:\CScript //H:CScript

nếu không, bạn sẽ nhận được một thông báo yêu cầu bạn làm như vậy và tệp máy in của bạn sẽ trống.


0

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

0

Sử dụng Powershell.

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


Chào mừng đến với Siêu người dùng. Bạn có thể nói gì hơn thế này không? Mặc dù tôi nghĩ rằng đây là một câu trả lời về mặt kỹ thuật, nó để lại rất nhiều cho trí tưởng tượng và vì đó không phải là một câu trả lời chất lượng cao.
Kẻ giả mạo Twisty
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.