如何通过 Windows 命令行获取我的机器上默认打印机的名称?
答案1
Microsoft Windows XP 附带一个 VBS 脚本,可以通过命令行管理本地和网络打印机:
获取默认打印机命令行的详细信息:
cscript C:\windows\system32\prnmngr.vbs -g
获取打印机列表从 Windows 命令行添加到系统:
cscript C:\windows\system32\prnmngr.vbs -l
设置默认打印机从 Windows 命令行:
cscript C:\windows\system32\prnmngr.vbs -t -p "\服务器名称\打印机名称"
官方文档和更多使用示例可以在以下位置找到:
答案2
基本的经典脚本通常比 vbs 或 powershell 脚本更实用:没有依赖项也没有先决条件需要检查,只需将其放入 cmd 文件中...我宁愿在 W10 上使用此命令(应该也可以在 Win7 上使用但我没有测试):
for /f "tokens=2 delims==" %%A in ('wmic.exe 打印机 WHERE default^=TRUE 获取名称 /VALUE') do (设置 "default_printer=%%A")
结果,您将在环境变量 %default_printer% 中获得默认打印机
另一个建议的解决方案(基于注册表读取)无法正常工作:如果您更改默认打印机并再次调用脚本,则修改不会立即计入注册表(也许会在下次重启后生效)。但这个方法有效。
答案3
使用批处理文件:
@echo off
::Get printer CLSID
for /f %%a in ('reg query HKCU\Printers\Defaults') do (set regkey=%%a)
::Get printer name from the previous CLSID
for /f "tokens=3*" %%a in ('reg query %regkey%') do (set printername=%%a %%b)
echo Printer name is: %printername%
我希望这能帮到你
答案4
在 PowerShell 5.1+ 中,您可以使用以下命令:
Get-CimInstance Win32_Printer | ? Default | select Name