Como imprimir em uma impressora local a partir do prompt de comando

1

Eu tenho o seguinte cenário:

Eu tenho uma impressora local conectada ao meu PC com Windows 8.1 e gostaria de imprimir vários documentos (arquivos com as extensões .txt, .pdf e .doc), no prompt de comando.

Eu tentei usar o comando de impressão documentado aqui . No entanto, isso não funciona. Não recebo nenhum material sendo impresso e uma mensagem de erro diz:

"Unable to initialize device DeviceName"

Não importa se eu especificar a porta na qual a impressora está conectada ou o nome do PC seguido pelo nome da impressora.

Este comando ainda é suportado no Windows 8.1? Como posso resolver este problema?

    
por Corporate Geek 20.02.2014 / 20:22

2 respostas

2

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
    
por 20.02.2014 / 23:06
2

O comando PRINT.COM só funciona com arquivos de texto. Ele imprimirá qualquer texto puro, como .TXT, .INI, .BAT, etc.

Se o seu programa suportar imprimir no arquivo , pode usar o comando PRINT.COM para enviar esses arquivos para a sua impressora.

    
por 20.02.2014 / 23:06