コマンドプロンプトからローカルプリンターに印刷する方法


1

次のシナリオがあります。

Windows 8.1 PCに接続されたローカルプリンターがあり、コマンドプロンプトからいくつかのドキュメント(拡張子が.txt、.pdf、および.docのファイル)を印刷したい。

ここに記載さている印刷コマンドを使用してみました。ただし、機能しません。何も印刷されず、次のようなエラーメッセージが表示されます。

「デバイスDeviceNameを初期化できません」

プリンターが接続されているポートを指定しても、PC名の後にプリンター名を指定してもかまいません。

このコマンドはWindows 8.1でも引き続きサポートされていますか?この問題を解決するにはどうすればよいですか?


私の教育のためだけに、なぜ誰もが正確にこれを行うのでしょうか?
最も病気の14

ローカルプリンターとネットワークプリンターのどちらに印刷するかを指定しません。ネットワークプリンターを使用する場合print、ローカルポートにマップしない限り機能しません。technet.microsoft.com/en-us/library/cc775908(v=ws.10).aspx
JSanchez 14

@Sickestさまざまなシステムメトリックを収集し、物理的なドキュメントを印刷する何らかのスクリプトがこのコマンドを必要とすると想像します。
マイケルフランク14

1
@JSanchez「Windows 8.1 PCにローカルプリンターが接続されています」ということを述べました。
コーポレートオタク14

私の悪い。老人、私の友人。答えを確認してください。それがあなたのために働くことを願っています。
JSanchez 14

回答:


2

VBScriptでこれを行う方法を次に示します。Jobbo から提供された回答に基づきます。

キャッチは、プログラムをデフォルトハンドラとして登録する必要があるということです。つまり、コマンドラインからファイルの名前を入力するだけで、適切なプログラムで開く必要があります。たとえば、「file.pdf」の引数を渡す場合は、PDFビューアーをインストールする必要があります。Wordドキュメントを印刷する場合は、Wordをインストールする必要があります(ビューアー動作するはずですが、テストしませんでした)。

もう1つ、ドキュメントの印刷後、一部のプログラムではウィンドウが開いたままになります(Adobe Acrobat Reader X)。スクリプトにロジックを追加してスクリプトを閉じることもできますが、それはあなたにお任せします。

使用するには、cscript /nologo <name_of_script.vbs> <name_of_file_to_print>ここに<name_of_script.vbs>保存するプログラム<name_of_file_to_print>の名前を入力し、印刷したいファイルの名前を入力します。パスにスペースが含まれる場合は、引数を引用符で囲みます。

Option Explicit

Dim shl, objFS
Dim fldr
Dim files,file
Dim file_to_print,wrk_folder

Set shl = CreateObject("Shell.Application")
Set objFS = CreateObject("Scripting.FileSystemObject")

if not wscript.Arguments.Count = 1 then 
    wscript.echo "Missing parameter!"
    wscript.quit
end if

file_to_print = wscript.arguments(0)
file_to_print = objFS.GetAbsolutePathName(file_to_print)
wrk_folder = objFS.GetParentFolderName(file_to_print) & "\"

wscript.echo "Argument passed: " & wscript.arguments(0)
wscript.echo "Absolute file path: " & file_to_print
wscript.echo "Work folder: " & wrk_folder & vbcrlf

if objFS.FileExists(file_to_print) then
    Set fldr = shl.Namespace(wrk_folder)
    Set files = fldr.Items

    For Each file in files
      If LCase(file.Path) = LCase(file_to_print) Then
        file.InvokeVerbEx("Print")
      End If

    Next
end if

Set shl = Nothing
Set fldr = Nothing
Set files = Nothing
Set objFS = Nothing

WScript.Quit

2

このPRINT.COMコマンドはテキストファイルでのみ機能します。.TXT、.INI、.BATなどの純粋なテキストをすべて印刷します。

プログラムがファイルへの印刷をサポートしている場合、PRINT.COMコマンドを使用してそれらのファイルをプリンターに送信できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.