找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 7545|回复: 9

[系统相关] 用BAT如何给打印机切换黑白与彩色或全部的打印模式?

[复制链接]
发表于 2025-4-8 03:19:03 | 显示全部楼层 |阅读模式
用BAT如何给打印机切换黑白与彩色或全部的打印模式?
 楼主| 发表于 2025-4-9 02:52:17 | 显示全部楼层
"rundll32 printui.dll,PrintUIEntry /y /n "["这里填写打印机名称"]" /e /q /h /m "["这里填写1或2指是否彩色或黑白"]""

请问代码正确吗?求高手指正
发表于 2025-4-9 10:25:51 | 显示全部楼层
回复 2# wh123wh123
@echo off
setlocal
:: 设置变量
set PRINTER_NAME=HP LaserJet Pro MFP M428fdw
set COLOR_MODE=2
:: 1=彩色, 2=黑白 (这取决于打印机驱动)
:: 使用 WMIC 设置打印机默认属性
echo 正在设置打印机 "%PRINTER_NAME%" 的颜色模式为 %COLOR_MODE%...
:: 注意:此命令可能需要根据您的打印机驱动进行调整
wmic printer where name="%PRINTER_NAME%" call setdefaultprinter
:: 另一种方法是使用 PowerShell 设置打印机首选项
powershell -command "$printer = Get-WmiObject -Query \"SELECT * FROM Win32_Printer WHERE Name='%PRINTER_NAME%'\"; $printer.SetDefaultPrinter()"
echo 打印机设置已完成。
pause
 楼主| 发表于 2025-4-9 17:42:39 | 显示全部楼层
回复 3# 北极奇熊

wmic printer where name="%PRINTER_NAME%" call setdefaultprinter这是设置默认打印机的命令吧?如何设置打印颜色模式呢?


powershell -command "$printer = Get-WmiObject -Query \"SELECT * FROM Win32_Printer WHERE Name='%PRINTER_NAME%'\"; $printer.SetDefaultPrinter()"这个命令里哪个是修改打印颜色模式的?
发表于 2025-4-10 08:38:50 | 显示全部楼层
回复 4# wh123wh123


    powershell -command "$printer = Get-CimInstance -ClassName Win32_Printer -Filter \"Name='%PRINTER_NAME%'\"; $settings = $printer.GetDevMode(1); $settings.Color = 2; $printer.SetDevMode($settings)"
       `$settings.Color = 2` 将颜色模式设置为黑白(通常 2 表示黑白,1 表示彩色)
                       `$printer.SetDevMode($settings)` 应用新的设置
 楼主| 发表于 2025-4-10 15:36:28 | 显示全部楼层
回复 5# 北极奇熊

@echo off
setlocal
set PRINTER_NAME=HP LaserJet Pro MFP M428fdw
set COLOR_MODE=2
powershell -command "$printer = Get-CimInstance -ClassName Win32_Printer -Filter \"Name='%PRINTER_NAME%'\"; $settings = $printer.GetDevMode(1); $settings.Color = %COLOR_MODE%; $printer.SetDevMode($settings)"
echo 打印机设置已完成。
pause
完整代码是这样吗?如果有不对的地方期待老师修正一下,另外问问这个可以通用吗?
 楼主| 发表于 2025-4-10 16:19:53 | 显示全部楼层
回复 5# 北极奇熊


无法将“Get-CimInstance”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请
检查名称的拼写,如果包括路径,请确保路径正确,然后重试。
所在位置 行:1 字符: 27
+ $printer = Get-CimInstance <<<<  -ClassName Win32_Printer -Filter "Name='Cano
n TS3300 series'"; $settings = $printer.GetDevMode(1); $settings.Color = 4; $pr
inter.SetDevMode($settings)
    + CategoryInfo          : ObjectNotFound: (Get-CimInstance:String) [], Com
   mandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

不能对值为空的表达式调用方法。
所在位置 行:1 字符: 122
+ $printer = Get-CimInstance -ClassName Win32_Printer -Filter "Name='Canon TS33
00 series'"; $settings = $printer.GetDevMode <<<< (1); $settings.Color = 4; $pr
inter.SetDevMode($settings)
    + CategoryInfo          : InvalidOperation: (GetDevMode:String) [], Runtim
   eException
    + FullyQualifiedErrorId : InvokeMethodOnNull

在此对象上找不到属性“Color”;请确保该属性存在且可设置。
所在位置 行:1 字符: 137
+ $printer = Get-CimInstance -ClassName Win32_Printer -Filter "Name='Canon TS33
00 series'"; $settings = $printer.GetDevMode(1); $settings. <<<< Color = 4; $pr
inter.SetDevMode($settings)
    + CategoryInfo          : InvalidOperation: (Color:String) [], RuntimeExce
   ption
    + FullyQualifiedErrorId : PropertyNotFound

不能对值为空的表达式调用方法。
所在位置 行:1 字符: 167
+ $printer = Get-CimInstance -ClassName Win32_Printer -Filter "Name='Canon TS33
00 series'"; $settings = $printer.GetDevMode(1); $settings.Color = 4; $printer.
SetDevMode <<<< ($settings)
    + CategoryInfo          : InvalidOperation: (SetDevMode:String) [], Runtim
   eException
    + FullyQualifiedErrorId : InvokeMethodOnNull

打印机设置已完成。
请按任意键继续. . .
发表于 2025-4-11 09:25:25 | 显示全部楼层
  1. @echo off
  2. :: Use ASCII characters only
  3. setlocal

  4. :: Set printer name and color mode
  5. set PRINTER_NAME=HP LaserJet Pro MFP M428fdw
  6. set COLOR_MODE=2
  7. :: 1=Color, 2=Black and White (depends on printer driver)

  8. echo Setting printer "%PRINTER_NAME%" color mode to %COLOR_MODE%...

  9. :: Use Get-WmiObject instead of Get-CimInstance
  10. powershell -command "$printer = Get-WmiObject -Class Win32_Printer -Filter "Name='%PRINTER_NAME%'"; if($printer) { $settings = $printer.GetDevMode(1); if($settings) { $settings.Color = %COLOR_MODE%; $printer.SetDevMode($settings); Write-Host 'Settings applied successfully!' } }"

  11. echo Printer settings completed.
  12. pause
复制代码
试试这个
 楼主| 发表于 2025-4-11 10:53:35 | 显示全部楼层
回复 8# 北极奇熊


Setting printer "Canon TS3300 series" color mode to 2...
方法调用失败,因为 [System.Management.ManagementObject#root\cimv2\Win32_Printer
] 不包含名为“GetDevMode”的方法。
所在位置 行:1 字符: 131
+ $printer = Get-WmiObject -Class Win32_Printer -Filter "Name='Canon TS3300 ser
ies'"; if($printer) { $settings = $printer.GetDevMode <<<< (1); if($settings) {
$settings.Color = 2; $printer.SetDevMode($settings); Write-Host 'Settings appl
ied successfully!' } }
    + CategoryInfo          : InvalidOperation: (GetDevMode:String) [], Runtim
   eException
    + FullyQualifiedErrorId : MethodNotFound

Printer settings completed.
请按任意键继续. . .

是佳能3380打印机
发表于 2025-8-16 00:57:26 | 显示全部楼层
你的问题解决了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 08:51 , Processed in 0.018360 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表