web-dev-qa-db-ja.com

コマンドラインからテキストファイルにプリンタを一覧表示する

インストールされているプリンタとその場所(マップされている場合)の一覧をテキストファイルに出力するためにコマンドラインから使用できるコマンドはありますか。それともこれを行うだろうコマンドラインから実行することができるプログラム?

30
user35406

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からのPrnMngr.vbsファイル(/ Windows/System32フォルダにあります)はWindows 2000上で動作します。XPマシンから2000マシンにコピーして実行します。

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

何らかの理由でユーザーのデスクトップから実行されないことがわかりましたが、.VBSをCのルートにコピーしたところ、問題なく実行されました。

28
Wesley

私が使う:

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
14
Matt Stoddard

Win7でPSを使いたくない場合があります(私はリモートPC上でバックグラウンドで管理作業を行えるアプリケーションを持っていますが、PowerShellを使用していません)。上記のXPビジュアル基本スクリプトは、Win7の次のフォルダにあります。

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

Windows 8/Server 2012以降、get-printer PowerShellコマンドレットがあります。

https://technet.Microsoft.com/ja-jp/library/hh918358%28v=wps.630%29.aspx?f=255&MSPPError=-2147217396

2
hmqcnoesy

注:Windows XPの場合は、必ずデフォルトのスクリプトHostをCScriptに変更してください。

C:\CScript //H:CScript

それ以外の場合は、その旨を知らせるメッセージが表示され、printers.txtファイルは空白になります。

1
cls

Powershellを使用してください。

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

0
stomy

だからこれは私の解決策です:

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