从命令行获取默认打印机名称?

从命令行获取默认打印机名称?

如何通过 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 "\服务器名称\打印机名称"


官方文档和更多使用示例可以在以下位置找到:

Prnmngr.vbs 文件的 MS WinXP 产品文档

答案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

相关内容