Board logo

标题: 新手写的搜索并连接打印机批处理脚本效率太低,请指点 [打印本页]

作者: zhujinhe    时间: 2012-9-5 12:44     标题: 新手写的搜索并连接打印机批处理脚本效率太低,请指点

环境介绍:局域网大约有30台Windows XP SP3电脑,IP地址是自动获取,每个电脑都有2个管理员组用户,administrator密码均为123456,另一个帐号abc,密码由使用者自己设置。
有2种型号的打印机插到其中1台或2台电脑(称作打印机服务器)上,已经安装USB打印机并设置为共享。
插着打印机的计算机名需要批处理进行判断,打印机共享名需要批处理判断,用户自己设定更改密码不影响打印机使用。
        
        以下是net view 的输出的结果:
  1. 服务器名称            注解
  2. ---------------------------------
  3. \\助理                 分店
  4. \\欧陆经典01           分店
  5. \\欧陆经典02           分店
  6. \\欧陆经典03           分店
  7. \\欧陆经典04           分店
  8. \\欧陆经典05           分店
  9. \\欧陆经典06           分店
  10. \\欧陆经典07           分店
  11. \\欧陆经典09           分店
  12. \\欧陆经典10           分店
  13. \\欧陆经典11           分店
  14. \\欧陆经典12           分店
  15. \\欧陆经典13           分店
  16. \\欧陆经典14           分店
  17. \\欧陆经典15           分店
  18. 命令成功完成。
复制代码
现状:在需要使用共享打印机的电脑上双击批处理,可以搜索出打印机服务器和打印机的共享名,并进行连接,然后用cmdkey.exe(XP没有,在win7里提取的)来保存其他电脑的用户名和密码。
1、由于批处理使用的不太熟练,截取net view只会先截出\\计算机名,再去去掉\\,应该可以简化步骤。
2、运行批处理后会保存所有net view列出电脑的帐号密码,需要的是只保存有打印机服务器的电脑密码。
3、逻辑似乎有问题,运行到搜索到共享打印机需要大约1分钟的时间,有些长。
4、有些报错不知道怎么隐藏,只能把结果全隐藏了。

请高手提出个功能和效率高一些的建议,贴出代码更好

先贴出不成熟的代码:
  1. @echo off&color 1f&rem num=10  nums=20
  2. mode con: cols=60 lines=25
  3. @rem cmdkey.exe释放到system32文件夹下
  4. copy cmdkey.exe C:\Windows\system32\cmdkey.exe >nul 2>nul
  5. @rem 连接打印机共享
  6. echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  7. echo +           本程序可以自动搜索并连接局域网中打印机        +
  8. for /l %%l in (1,1,60) do set/p a=^+<nul& ping 127.0.0.1 -n 0 >nul
  9. echo +      稍等片刻,会弹出的连接打印机的警告框,选择:是     +
  10. for /l %%l in (1,1,60) do set/p a=^+<nul& ping 127.0.0.1 -n 0 >nul
  11. for /f "tokens=1" %%i in ('net view ^| find "\\"') do (
  12.     for /f "delims=\" %%j in ("%%i") do (
  13.         cmdkey /add:%%j /user:%%j\administrator /pass:123456 >nul 2>nul
  14.         for /f "tokens=1" %%k in ('net view \\%%j^| find "Print"') do (
  15.            rundll32 printui.dll,PrintUIEntry /in /u /z /q /n \\%%~nj\%%~nk
  16.         )
  17.     )
  18. )>nul 2>nul
  19. echo 打印机已经添加完毕。
  20. pause
复制代码

作者: forfiles    时间: 2012-9-5 15:23

  1. @echo off
  2. for /f "tokens=1 delims=\ " %%a in ('net view ^| find "\\"') do (
  3.     echo %%a
  4. )
  5. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2