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