Windows 图片打印
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_6da1df82/windows-print-image。
技能介绍
要解决的问题
在 Windows 上把一张图片送到打印机,看起来是件小事,但落到自动化脚本里很容易翻车。最常见的坑是路径里带中文:调用链经过 bash 或 git-bash 再进 cmd /c mspaint /pt 时,命令行参数会在多层编码转换中被破坏,画图收到的是乱码路径,打印任务发不出去。另一个坑是走 PowerShell 的 Start-Process -Verb Print,它会弹出确认对话框等着人工点确定,自动化流程当场卡死。
技能如何工作
思路很直接:绕开 bash 这条编码污染链,改用 Python 的 subprocess 直接拉起 mspaint,并且强制使用原始字符串传路径。
核心步骤:
- 确认文件存在 —— 先校验待打印图片的路径有效,避免把无效参数交给画图。
- 列出可用打印机(可选) —— 需要时枚举系统打印机,并可检查当前默认打印机。
- 执行打印 —— 以 Python 原始字符串
r'...'传路径,调用mspaint /pt。
关键在于 r'...':原始字符串原样保留字节序列,中文路径不再经过 bash 转码,mspaint /pt 拿到的就是文件系统里的真实路径。另外 mspaint /pt 只吃两个参数,/pt 加文件路径就够了,不需要额外指定驱动或端口。
适用边界与注意点
- 不要在 bash 里执行
cmd /c mspaint /p或cmd /c mspaint /pt,中文路径会被破坏。 - 不要用 PowerShell 的
Start-Process -Verb Print,它会弹出需要手动确认的对话框。 - 路径必须写成 Python 原始字符串。
- 判断成功与否看返回码:
returncode: 0表示任务已成功提交。真正的纸张输出仍需到打印机物理出纸口确认。
使用场景
- 在 Windows 办公电脑上把生成的报表截图自动发送到指定打印机,无需手动打开图片
- 图片存放在含中文的目录中,需要调用 mspaint 打印而不被路径乱码打断
- 先列出系统可用打印机并确认默认打印机,再把一张图片打印到目标设备
- 脚本需要确认打印任务是否成功提交,通过返回码判断并核对打印机出纸结果
适合人员
- 在 Windows 上编写自动化脚本的开发者:需要在流程末尾把图片结果真实打印出来
- 维护批量出图与报表工具的运维工程师:常遇到中文路径打印失败,需要稳定方案
- 用 Python 驱动 Windows 外部程序的集成开发者:需要绕过 bash 编码坑直接调用 mspaint
- 为团队搭建内部打印自动化工具的工程师:需要在无人值守场景下确认任务成功提交