返回列表 发帖

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

用BAT如何给打印机切换黑白与彩色或全部的打印模式?

"rundll32 printui.dll,PrintUIEntry /y /n "["这里填写打印机名称"]" /e /q /h /m "["这里填写1或2指是否彩色或黑白"]""

请问代码正确吗?求高手指正

TOP

回复 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

TOP

回复 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()"这个命令里哪个是修改打印颜色模式的?

TOP

回复 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)` 应用新的设置

TOP

回复 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
完整代码是这样吗?如果有不对的地方期待老师修正一下,另外问问这个可以通用吗?

TOP

回复 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

打印机设置已完成。
请按任意键继续. . .

TOP

@echo off
:: Use ASCII characters only
setlocal
:: Set printer name and color mode
set PRINTER_NAME=HP LaserJet Pro MFP M428fdw
set COLOR_MODE=2
:: 1=Color, 2=Black and White (depends on printer driver)
echo Setting printer "%PRINTER_NAME%" color mode to %COLOR_MODE%...
:: Use Get-WmiObject instead of Get-CimInstance
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!' } }"
echo Printer settings completed.
pauseCOPY
试试这个

TOP

回复 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打印机

TOP

返回列表