如何让 DOS 程序打印到 USB 打印机?
DOS 程序本身只能向 LPT1–LPT9 或 PRN 这类并行端口发打印任务,无法直接识别 USB 打印机。可行的做法是:在 Windows 上安装一个打印重定向工具,让它捕获 DOS 程序发往 LPT/PRN 的打印作业,再转发给 Windows 里已经装好的 USB 打印机。DOS2USB 就是这类工具,官方说明它能同时捕获 LPT1–LPT9 与 PRN 端口的作业,并重定向到 GDI、网络、IP、PDF、虚拟打印机等"Windows 能打印的任何打印机"。适用条件是:DOS 程序运行在 Windows 2000、XP、Vista、7、8、8.1 或 Windows Server 2003(SP2)/2008/2012 上,且目标 USB 打印机已在 Windows 中正常安装并能打印测试页。
原理:为什么必须做重定向
MS-DOS 应用是按字符模式打印机设计的,输出目标是并口。而现在的激光、喷墨打印机大多只提供 USB 连接,DOS 应用访问不到。重定向工具在中间做了一层"翻译":
- 拦截 DOS 程序写到 LPT 或 PRN 的字节流;
- 把它交给 Windows 打印子系统;
- 由 Windows 用 USB 打印机的驱动完成实际输出。
因此判断能否成功的第一个前提,不是 DOS 程序,而是这台 USB 打印机在 Windows 里是否已经能正常打印。Windows 打不出来的打印机,重定向工具也打不出来。
配置步骤
- 先在 Windows 装好 USB 打印机:用厂商驱动完成安装,打印一张 Windows 测试页确认通路正常。
- 安装重定向工具:以 DOS2USB 为例,按其说明完成安装与激活(官网提供下载、在线订购和离线激活入口)。
- 选择要捕获的 DOS 端口:在工具中指定捕获 LPT1(或 LPT2…LPT9、PRN)。DOS 程序里原本设置的打印端口要和这里一致。
- 指定目标打印机:把捕获到的作业对应到那台 USB 打印机(也可选网络、IP、PDF、虚拟打印机)。
- 设置代码页:如果打印内容含非英文(拉丁、希腊、俄语、葡萄牙语、土耳其语、希伯来语等),选择与 DOS 程序一致的代码页,否则会出现乱码。
- 验证:从 DOS 程序执行一次打印,观察作业是否出现在 Windows 打印队列并正常出纸。
关键能力与限制
| 项目 | 说明 |
|---|---|
| 捕获端口 | LPT1–LPT9 与 PRN,可同时捕获 |
| 目标打印机 | Windows 能打印的任何打印机,含 USB、网络、IP、PDF、虚拟打印机 |
| 系统支持 | Windows 2000/XP/Vista/7/8/8.1,Server 2003(SP2)/2008/2012 |
| 特殊场景 | 支持 LAN 与 RDP(终端服务)下捕获与重定向;提供全屏 DOS 提示符 |
| 授权 | 官方称许可证可转移,不绑定系统或硬盘 |
| 退换 | 官网标注 15 天退款保证 |
注意:以上均为 DOS2USB 官方页面陈述,具体版本差异、价格与授权条款需以官网当前信息为准;资料未提及是否免费,不应默认免费使用。
常见卡点排查
- 打印乱码:代码页不匹配。核对 DOS 程序使用的代码页,在工具里选同一套。
- 完全没有输出:先确认 Windows 测试页能打;再确认捕获的端口号与 DOS 程序设置的端口一致。
- 端口被占用/冲突:同一 LPT 端口被其他程序或驱动占用时捕获会失败,检查是否有并口驱动或旧打印工具在抢端口。
- RDP/终端服务下失效:确认使用的是支持 LAN/RDP 的版本或授权。
- 换机器后失效:若许可证与硬件绑定会受影响,DOS2USB 声称许可证可转移、不依赖系统或硬盘,但以实际授权说明为准。
如果只是偶尔打印纯文本,也可以考虑其他同类重定向工具(如 PrintFil、DOSPRN 等),选择时用同一组维度比较:支持的捕获端口、目标打印机类型、代码页/语言支持、Windows 版本与 RDP 兼容性、授权与退款条件。