如何从命令提示符打印到本地打印机

如何从命令提示符打印到本地打印机

我有以下情况:

我有一台本地打印机连接到我的 Windows 8.1 PC,我想从命令提示符打印几个文档(带有 .txt、.pdf 和 .doc 扩展名的文件)。

我曾尝试使用记录的打印命令这里。但是,它不起作用。我没有打印任何内容,并且出现一条错误消息:

“无法初始化设备 DeviceName”

无论我指定打印机连接的端口还是 PC 名称后跟打印机名称都没有关系。

Windows 8.1 是否仍支持此命令?我该如何解决这个问题?

答案1

以下是使用 VBScript 实现此目的的方法。基于提供答案由 Jobbo 提供。

问题是,你必须有一个程序注册为默认处理程序。换句话说,如果您只是从命令行键入文件的名称,它应该在适当的程序中打开。例如,如果您传递“file.pdf”的参数,则必须安装 PDF 查看器。如果您想打印 Word 文档,您必须安装 Word(我认为查看器应该可以工作,但我没有测试过)安装。

还有一件事,有些程序在文档打印后会保留一个打开的窗口(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命令将这些文件发送到您的打印机。

相关内容