我正在尝试建立一个自动打印系统,并希望安装多个相同的网络共享打印机,每个打印机都有不同的默认设置(彩色与黑白、双面与单面等),然后我的打印过程可以选择所需的打印机,而不必担心在代码中设置这些参数。
我知道可以安装本地或网络打印机的副本,如这问题。但是,网络共享打印机不遵循相同的规则,尽管它们确实指定了端口,但在尝试创建副本时该端口不可用。
是否可以创建网络共享打印机的副本?
答案1
在 Windows 7 中,您可以使用 VBscript 创建 TCP/IP 打印机端口。我还没有机会测试它在 Windows 10 中是否仍能正常工作。
这是我使用的(稍微简化的)add-tcp-ip-port.vbs 脚本:
ip = args.Item(0)
Set objWMIService = GetObject("winmgmts:")
Set objNewPort = objWMIService.Get("Win32_TCPIPPrinterPort").SpawnInstance_
objNewPort.Name = "IP_" & ip
objNewPort.Protocol = 1
objNewPort.HostAddress = ip
objNewPort.PortNumber = "9100"
objNewPort.SNMPEnabled = False
objNewPort.Put_
MsgBox "OK. Added port at " & ip, vbOK, "Creating JetDirect TCP/IP port"
使用它来安装打印机的示例脚本如下所示:
@echo off
echo Installing NRG MP C4501 Copier bw
SET IP=192.168.44.19
SET NAME=Copier black-white
SET DRIVER=NRG MP 4500 PCL 6
SET INF=\\SomeServer\install\drivers\NRG-MP-C4501-Copier\MP4500-black-white\oemsetup.inf
echo Create TCP/IP port %IP% ...
wscript "%~dp0add-tcp-ip-port.vbs" %IP%
echo Installing "%NAME%" using "%DRIVER%" driver from "%INF%" ...
rundll32 printui.dll,PrintUIEntry /m "%DRIVER%" /ia /f "%INF%" /u
rundll32 printui.dll,PrintUIEntry /m "%DRIVER%" /b "%NAME%" /if /f "%INF%" /r "IP_%IP%" /u /z