Aqui está uma maneira de fazer isso com o VBScript. Com base em uma resposta fornecida pela Jobbo.
O problema é que você deve ter um programa registrado como manipulador padrão. Em outras palavras, se você simplesmente digitar o nome de um arquivo na linha de comando, ele deverá abrir no programa apropriado. Por exemplo, se você passar o argumento de "file.pdf", deverá ter um visualizador de PDF instalado. Se você quiser imprimir um documento do Word, você deve ter o Word (acho que um visualizador deve funcionar, mas não testei isso) instalado.
Além disso, alguns programas deixam uma janela aberta (Adobe Acrobat Reader X) após a impressão do documento. Você pode adicionar lógica ao script para fechá-lo, mas vou deixar isso para você.
Para usar, digite cscript /nologo <name_of_script.vbs> <name_of_file_to_print>
em que <name_of_script.vbs>
é o nome do programa em que você salvou e <name_of_file_to_print>
é o nome do arquivo que você deseja imprimir. Se o caminho contiver espaços, coloque o argumento entre aspas.
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