DOS 程序无法打印到 USB 打印机怎么办?

DOS 程序打印失败,通常不是打印机坏了,而是它只会往 LPT1–LPT9 或 PRN 这类字符模式端口写数据,而现代 USB 打印机在 Windows 里并没有 DOS 能直接访问的端口。解决办法是在 Windows 侧把 DOS 的打印作业“截”下来,再转发给 USB、网络或虚拟打印机。DOS2USB 就是做这件事的工具:它同时捕获 LPT1–LPT9 和 PRN 端口的打印作业,重定向到任意 Windows 能打印的打印机,包括 USB 打印机、GDI 打印机、网络打印机、IP 打印机、PDF 等虚拟打印机,并支持 ANSI、OEM、Latin、Greek、Russian、Portuguese、Turkish、Hebrew 等代码页。下面按“先判断原因、再选方案、最后验证”的顺序说明。

先确认失败原因

DOS 应用程序是按字符模式打印机设计的,输出目标是并口或 PRN。而现在的激光、喷墨打印机大多只提供 USB 连接,DOS 程序访问不到这个 USB 端口,所以打印任务发不出去或直接丢失。

判断方法很简单:如果同一台打印机在 Windows 里能正常打印,但 DOS 程序里选 LPT1、LPT2 或 PRN 都没有反应,基本就是端口不通,而不是驱动或硬件问题。

方案一:用 DOS2USB 捕获并重定向

这是针对该问题最直接的方案,适合仍要保留原 DOS 程序、又想让输出落到 USB 打印机的场景。

  1. 在运行 DOS 程序的 Windows 机器上安装 DOS2USB。资料显示支持 Windows 2000、XP、Vista、7、8、8.1,以及 Windows Server 2003(SP2)、2008、2012,并支持 LAN 和 RDP(终端服务)环境。
  2. 在工具中指定要捕获的端口,例如 LPT1 或 PRN。它支持 LPT1 到 LPT9 与 PRN 端口同时捕获。
  3. 为每个被捕获的端口选择对应的目标打印机——可以是 USB 打印机、网络打印机、IP 打印机、PDF 打印机或其他虚拟打印机。
  4. 保持 DOS 程序里的打印目标不变(仍指向 LPT1 或 PRN),由 DOS2USB 在后台完成转发。

几个值得注意的点:

  • 即使打印机物理上就连在被捕获的那个端口上,重定向依然生效。
  • 它提供全屏 DOS 提示符,在新版 Windows 甚至 RDP 下也能让 DOS 程序获得全屏体验。
  • 授权可转移,不绑定系统或硬盘;另有 LAN 与 RDP 版本。资料提到 15 天退款保证。
  • 如果 DOS 程序输出的是非英文内容,需要让 DOS 代码页与工具的语言支持匹配,否则会出现乱码。

方案二:用 Windows 共享 + net use 映射 LPT

如果不想装第三方捕获工具,可以借助 Windows 自带的端口映射,把 USB 打印机“伪装”成 DOS 能用的 LPT 端口。

  1. 在 Windows 中把 USB 打印机设为共享。
  2. 打开命令提示符,用 net use 把 LPT1 映射到这台共享打印机,例如:
net use LPT1: \\本机名\共享打印机名 /persistent:yes
  1. 在 DOS 程序里照常打印到 LPT1。

预期结果是 DOS 的打印作业经 LPT1 转到共享打印机再输出。常见卡点是:共享名或计算机名写错、权限不足、LPT1 已被其他设备或驱动占用,以及部分 DOS 程序绕过 Windows 直接操作硬件端口导致映射失效。相比之下,方案一在端口捕获和代码页处理上更完整。

方案三:改用支持 DOS 输出的打印机或网络打印服务器

如果不想在每台机器上做软件重定向,也可以从硬件侧解决:使用仍提供并口、且能被 DOS 直接驱动的打印机,或通过网络打印服务器把并口打印任务接入网络。这类方案适合设备数量少、打印量稳定、且愿意更换或增加硬件的场景;代价是硬件选择受限,且不一定支持多语言代码页。

排查要点

  • 捕获端口是否被占用:确认 DOS 程序实际输出到哪个端口,以及该端口是否已被其他程序或驱动占用。
  • 打印机驱动是否正常:先在 Windows 里打印测试页,确保 Windows 侧本身能出纸。
  • 代码页与字符集是否匹配:非英文内容乱码时,检查 DOS 代码页与工具的语言设置是否一致。
  • 环境是否特殊:在 RDP 或终端服务下运行时,确认使用的是支持 LAN/RDP 的版本。

验证方法

先用 DOS 程序打印一张测试页,确认重定向后能正常出纸。如果 Windows 测试页正常、DOS 测试页不出纸,问题在捕获或端口映射环节;如果出纸但内容乱码,问题在代码页设置。逐项排除后即可定位到具体环节。

dos2usb.com
DOS2USB Captures MS-DOS Print Job from LPT or PRN and Redirect it to any Windows Printer like USB printer, GDI printer, Network printer, Fax Printe...
dosprn.com
Print from DOS program on the new printers independently of their types (yes, DOSPRN supports USB, network printers, print-servers, and PDF-printer...