标题: [系统相关] 共享打印机批处理脚本错误和正确,返回值都是0? [打印本页]
作者: houp 时间: 2019-12-8 17:33 标题: 共享打印机批处理脚本错误和正确,返回值都是0?
本帖最后由 houp 于 2019-12-10 12:41 编辑
- @echo off
-
- ping 192.168.113.1 -n 1
-
- IF %errorlevel% == 0 (
- goto start
- )else (
- msg %username% /time:60 "网络不通!请检查网络连接!"
- exit
- )
-
- :start
- cmdkey /add:192.168.113.1 /user:printers /pass:1234!@#$ >nul 2>nul
- rem # 添加共享打印机服务器凭据,以便解决客户主机重启后打印机连接失效!
- rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.113.1\8楼打印机"
- rem # 安装\\192.168.113.1\8楼打印机"并设置为不共享"。
- [color=Red]IF %errorlevel% == 0 [/color](
- rundll32 printui.dll,PrintUIEntry /y /n "\\192.168.113.1\8楼打印机"
- rem #将 \\192.168.113.1\8楼打印机"自动设置为默认打印机。
- control.exe /name Microsoft.Printers
- rem # 打开设备和打印机
- msg %username% /time:60 "8楼 打印机安装完成,请使用!"
- )else (
- msg %username% /time:30 "权限不足!请联系系统管理员"
- exit
- )
复制代码
以上为代码 ,执行安装没问题,只是在共享权限异常时,执行到rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.113.1\8楼打印机"后 if %errorlevel% == 0 判断失效! 不管能不能安装成功,返回值都是0,导致最后的 权限提示永远不会生效!
请问大神有解决办法吗?
作者: a20150604 时间: 2019-12-8 18:25
本帖最后由 a20150604 于 2019-12-8 18:26 编辑
- @echo off & setlocal enabledelayedexpansion
-
- echo;errorlevel=!errorlevel!
-
- nothiscommand
-
- echo;errorlevel=!errorlevel!
-
- dir ZZZ:\NOTHISDIR
-
- echo;errorlevel=!errorlevel!
-
- pause
- exit
复制代码
作者: Batcher 时间: 2019-12-8 20:02
回复 1# houp
试试这样可以吗- @echo off
- ping 192.168.113.1 -n 1
- if %errorlevel% == 0 (
- goto start
- ) else (
- msg %username% /time:60 "网络不通!请检查网络连接!"
- goto :eof
- )
-
- :start
- cmdkey /add:192.168.113.1 /user:print /pass:123qwe@#$ >nul 2>nul
- rem # 添加共享打印机服务器凭据,以便解决客户主机重启后打印机连接失效!
- rundll32 printui.dll,PrintUIEntry /in /u /z /q /n "\\192.168.113.1\8楼打印机"
- if errorlevel 1 (
- msg %username% /time:30 "权限不足!请联系系统管理员"
- goto :eof
- ) else (
- rem # 安装\\192.168.113.1\8楼打印机"并设置为不共享"。
- rundll32 printui.dll,PrintUIEntry /y /n /q "\\192.168.113.1\8楼打印机"
- rem #将 \\192.168.113.1\8楼打印机"自动设置为默认打印机。
- control.exe /name Microsoft.Printers
- rem # 打开设备和打印机
- msg %username% /time:60 "8楼 打印机安装完成,请使用!"
- )
复制代码
作者: houp 时间: 2019-12-10 12:39
回复 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楼打印机"并不共享
作者: houp 时间: 2019-12-10 12:49
回复 2# a20150604
你好! 我直接粘贴在脚本前面,执行也是错误
你看下还有别的解决方法吗?
作者: a20150604 时间: 2019-12-10 18:33
本帖最后由 a20150604 于 2019-12-10 18:45 编辑
回复 5# houp
看看这个- @echo off
-
- REM 如果已安装过此打印机, 就先删除
- (wmic printer where "Name='\\\\192.168.113.1\\8楼打印机'" get Name | FIND /i "\\192.168.113.1\8楼打印机") && (
- echo;delete "\\192.168.113.1\8楼打印机"
- wmic printer where "Name='\\\\192.168.113.1\\8楼打印机'" delete
- ) || (
- echo;NOT FOUND THE PRINTER
- )
-
-
- REM TODO 安装打印机
- REM ...
-
- REM 如果已安装过此打印机, 就先删除
- REM 如果存在指定名称的打印机, 下行语句将把 ERRORLEVEL 设置为 0, 否则 将 设为 1
- wmic printer where "Name='\\\\192.168.113.1\\8楼打印机'" get Name | FIND /i "\\192.168.113.1\8楼打印机"
- echo;errorlevel=%errorlevel%
-
- wmic printer where "Name='NO_THIS_NAME_Printer'" get Name | FIND /i "NO_THIS_NAME_Printer"
- echo;errorlevel=%errorlevel%
-
- pause
- exit
复制代码
作者: houp 时间: 2019-12-10 20:10
本帖最后由 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 设置默认打印机
作者: houp 时间: 2019-12-10 20:25
我们公司的员工比较多,都是员工自己安装,所以都需要弹窗提醒!以便提醒他们打印机的安装结果!
非常感谢大家耐心的帮忙! 让我的脚本得以完美运行!
作者: kswdiy 时间: 2019-12-14 11:25
你这段代码 在微信那个就是你啊
这个代码中在 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 安装都是提示失败 实际是安装成功的... 这判断语句有待改进
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |