[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 共享打印机批处理脚本错误和正确,返回值都是0?

本帖最后由 houp 于 2019-12-10 12:41 编辑
  1. @echo off
  2. ping 192.168.113.1 -n 1     
  3. IF %errorlevel% == 0 (
  4. goto start
  5. )else (
  6. msg %username% /time:60 "网络不通!请检查网络连接!"
  7. exit
  8. )
  9. :start
  10. cmdkey /add:192.168.113.1 /user:printers /pass:1234!@#$ >nul 2>nul
  11. rem # 添加共享打印机服务器凭据,以便解决客户主机重启后打印机连接失效!
  12. rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.113.1\8楼打印机"
  13. rem # 安装\\192.168.113.1\8楼打印机"并设置为不共享"。
  14. [color=Red]IF %errorlevel% == 0 [/color](
  15. rundll32 printui.dll,PrintUIEntry /y /n  "\\192.168.113.1\8楼打印机"
  16. rem #将 \\192.168.113.1\8楼打印机"自动设置为默认打印机。
  17. control.exe /name Microsoft.Printers
  18. rem # 打开设备和打印机  
  19. msg %username% /time:60 "8楼 打印机安装完成,请使用!"
  20. )else (
  21. msg %username% /time:30 "权限不足!请联系系统管理员"
  22. exit
  23. )
复制代码
以上为代码 ,执行安装没问题,只是在共享权限异常时,执行到rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.113.1\8楼打印机"后     if %errorlevel% == 0 判断失效! 不管能不能安装成功,返回值都是0,导致最后的  权限提示永远不会生效!
请问大神有解决办法吗?

本帖最后由 a20150604 于 2019-12-8 18:26 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. echo;errorlevel=!errorlevel!
  3. nothiscommand
  4. echo;errorlevel=!errorlevel!
  5. dir ZZZ:\NOTHISDIR
  6. echo;errorlevel=!errorlevel!
  7. pause
  8. exit
复制代码

TOP

回复 1# houp


试试这样可以吗
  1. @echo off
  2. ping 192.168.113.1 -n 1     
  3. if %errorlevel% == 0 (
  4.     goto start
  5. ) else (
  6.     msg %username% /time:60 "网络不通!请检查网络连接!"
  7.     goto :eof
  8. )
  9. :start
  10. cmdkey /add:192.168.113.1 /user:print /pass:123qwe@#$ >nul 2>nul
  11. rem # 添加共享打印机服务器凭据,以便解决客户主机重启后打印机连接失效!
  12. rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.113.1\8楼打印机"
  13. if errorlevel 1 (
  14.     msg %username% /time:30 "权限不足!请联系系统管理员"
  15.     goto :eof
  16. ) else (
  17.     rem # 安装\\192.168.113.1\8楼打印机"并设置为不共享"。
  18.     rundll32 printui.dll,PrintUIEntry /y /n /q "\\192.168.113.1\8楼打印机"
  19.     rem #将 \\192.168.113.1\8楼打印机"自动设置为默认打印机。
  20.     control.exe /name Microsoft.Printers
  21.     rem # 打开设备和打印机  
  22.     msg %username% /time:60 "8楼 打印机安装完成,请使用!"
  23. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher

你好! 我经过测试,当“rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.113.1\8楼打印机" ”这条命令,执行错误时,依然返回值为零 !也就是说打印机安装成功与否,返回值都为零!
网络通,但由于共享权限等问题导致打印机安装失败:

rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.112.140\8楼打印机"
rem # 静默安装"\\192.168.113.1\8楼打印机"并不共享

TOP

回复 2# a20150604


  你好!  我直接粘贴在脚本前面,执行也是错误
你看下还有别的解决方法吗?

TOP

本帖最后由 a20150604 于 2019-12-10 18:45 编辑

回复 5# houp
看看这个
  1. @echo off
  2. REM 如果已安装过此打印机, 就先删除
  3. (wmic printer where "Name='\\\\192.168.113.1\\8楼打印机'" get Name | FIND /i "\\192.168.113.1\8楼打印机") && (
  4.     echo;delete "\\192.168.113.1\8楼打印机"
  5.     wmic printer where "Name='\\\\192.168.113.1\\8楼打印机'" delete
  6. ) || (
  7.     echo;NOT FOUND THE PRINTER
  8. )
  9. REM TODO 安装打印机
  10. REM ...
  11. REM 如果已安装过此打印机, 就先删除
  12. REM 如果存在指定名称的打印机, 下行语句将把 ERRORLEVEL 设置为 0, 否则 将 设为 1
  13. wmic printer where "Name='\\\\192.168.113.1\\8楼打印机'" get Name | FIND /i "\\192.168.113.1\8楼打印机"
  14. echo;errorlevel=%errorlevel%
  15. wmic printer where "Name='NO_THIS_NAME_Printer'" get Name | FIND /i "NO_THIS_NAME_Printer"
  16. echo;errorlevel=%errorlevel%
  17. pause
  18. exit
复制代码

TOP

本帖最后由 houp 于 2019-12-10 20:19 编辑

回复 6# a20150604

非常感谢!根据你的详细的思路,我的共享打印机脚本已经完美运行,
     下面是我根据你的代码,更改后的脚本:

@echo off
rem # 检测目标主机网络的连通性,通则继续进行打印机安装,否则弹窗提示“ 网络不通,请检查网络”并自动退出安装。
ping 192.168.113.1 -n 1

IF %errorlevel% == 0 (
    goto start
)else (
    msg %username% /time:60 "网络不通!请检查网络"
    exit
)

:start
rem # 添加共享打印机服务器凭据,以便解决客户主机重启后打印机连接失效!
cmdkey /add:192.168.113.1/user:print /pass:1234!@#$ >nul 2>nul

rem # 安装\\192.168.113.1\8楼打印机"并设置为不共享"。
rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.113.1\8楼打印机"
rem #将 \\192.168.113.1\8楼打印机"自动设置为默认打印机。
rundll32 printui.dll,PrintUIEntry /y /n "\\192.168.113.1\8楼打印机"
rem # 自动打开控制面板中的  设备和打印机
control.exe /name Microsoft.Printers

REM 如果存在指定名称的打印机,弹窗提示安装成功,否则弹窗提示安装失败!
wmic printer where "Name='\\\\192.168.113.1\\8楼打印机'" get Name | FIND /i "\\192.168.113.1\8楼打印机"
(echo;errorlevel=%errorlevel%)|findstr "0" && msg %username% /time:30 "8楼打印机安装成功"
(echo;errorlevel=%errorlevel%)|findstr "1" && msg %username% /time:60 "8楼打印机安装失败!"





REM # /in 安装网络打印机

REM # /u 如果已经存在驱动,直接使用,

REM # /z 不共享打印机

REM # /q 执行静默安装

REM # /n 打印机名称

REM # /y 设置默认打印机

TOP

我们公司的员工比较多,都是员工自己安装,所以都需要弹窗提醒!以便提醒他们打印机的安装结果!


非常感谢大家耐心的帮忙! 让我的脚本得以完美运行!

TOP

你这段代码 在微信那个就是你啊

这个代码中在 nt5 系统有2段语其中
rem # 添加共享打印机服务器凭据,以便解决客户主机重启后打印机连接失效!
cmdkey /add:192.168.113.1/user:print /pass:1234!@#$ >nul 2>nul
账户我知道是 print  密码怎么书写 是 1234!  还是1234!@#$   ????

跳过这个我给这段代码rem  过去 在 nt5  凑合过去



REM 如果存在指定名称的打印机,弹窗提示安装成功,否则弹窗提示安装失败!
wmic printer where "Name='\\\\192.168.113.1\\8楼打印机'" get Name | FIND /i "\\192.168.113.1\8楼打印机"
(echo;errorlevel=%errorlevel%)|findstr "0" && msg %username% /time:30 "8楼打印机安装成功"
(echo;errorlevel=%errorlevel%)|findstr "1" && msg %username% /time:60 "8楼打印机安装失败!"

这段 我在xp  03  安装都是提示失败 实际是安装成功的...  这判断语句有待改进

TOP

返回列表