有一个非常古老的 FoxPro DOS 程序,它通过 LPT1 打印文档,现在用户想要软拷贝。因此,我在本地计算机上共享了 PDF 打印机和 OneNote 打印机,并尝试将 LPT1 映射到它们,如下所示
PDF 打印机:
net use LPT1: \\{my machine name}\pdf
打印机“发送至 OneNote 2013”:
net use LPT1: \\{my machine name}\one
两个命令都已成功完成,我可以看到可以通过以下命令将任务添加到打印机队列中,但实际上没有打印任何内容
print /d:LPT1 result.txt
=> result.txt is currently being printed
注意:我也尝试了 LPT2、LPT3,但得到了相同的结果
答案1
如果计算机上存在物理打印机端口,则重定向 LPT1 有时会出现问题。如果是这种情况,您可以尝试以下操作:
- 在 BIOS 中禁用 LPT1(如果支持)
- 指示旧 DOS 程序使用 LPT2(如果它接受此类参数)并重定向 LPT2
- 使用古老的命令
MODE LPT1:=LPT2:
(可能太旧,无法在 Windows 7 中使用)并重定向 LPT2
您还可以尝试以管理员身份在命令提示符(cmd)中运行以下命令:
net use lpt1: /delete
net use lpt1: \\{my machine name}\{pdf-printer} /persistent:yes
答案2
主要问题不是重定向。Windows 打印机驱动程序无法处理由 DOS 程序发送的带有嵌入式打印代码的 ASCII 数据流。DOS 打印机会将数据流渲染到纸张上。对于所有其他打印任务,您需要一个外部 DOS 到 Windows 打印处理器程序(更多,甚至是免费软件)。或者 vDos,尽管它主要用于在 Windows 64 位中运行 DOS 应用程序,就像现在大多数 Windows 10 发行版一样。
答案3
我今天遇到了同样的问题;我发现如果你使用不带引号的文件路径""
,它会显示is currently being printed
消息但实际上什么都没有打印。如果文件的目录中有空格,命令行需要将文件的所有路径放在引号内""
。