我有以下情况:
我有一台本地打印机连接到我的 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
命令将这些文件发送到您的打印机。