找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26121|回复: 6

[其他] 批处理怎样自动搜寻局域网内某款共享打印机并连接?

[复制链接]
发表于 2012-6-4 07:27:33 | 显示全部楼层 |阅读模式
现状:很多工作站,每个工作站有20台左右电脑,所有电脑密码相同,其中1他电脑插着USB打印机并已经设置为共享,共享名为HPOffice,IP地址是自动分配的。
已知在当前系统设置下,net view能列出所有电脑名字,net view \\计算机名 | find "Print"&&rundll32 printui.dll,PrintUIEntry /in /n \\计算机名\HPOffice可以成功连接共享打印机。
需求:写一个批处理,只要运行一下,就能识别出插着打印机的电脑名,然后按照计算机名连接共享打印机。
PS:我的想法是net view列出所有局域网内计算机名,然后每个计算机名依次运行net view \\计算机名 | find "Print"&&rundll32 printui.dll,PrintUIEntry /in /n \\计算机名\HPOffice。新手求教
发表于 2012-6-4 08:41:02 | 显示全部楼层
把net view的结果贴出来看看
 楼主| 发表于 2012-6-4 09:04:43 | 显示全部楼层
net view的结果如下:
服务器名称            注解

-------------------------------------------------------------------------------
\\TANGQI                                                                       
\\海岩-PC                                                                     
命令成功完成。

新手初学,按照前辈们写的教程,写成下面的代码,是否规范什么的不太懂,请高手指教。
  1. @echo off
  2. set printername=Brother
  3. net view |find "\" >c:\1.txt
  4. for /f "tokens=*" %%i in (c:\1.txt) do (
  5. net view %%~ni | find "%printername%"&&rundll32 printui.dll,PrintUIEntry /in /n \\%%~ni\%printername%&&echo 已经成功连接到位于%%~ni的打印机&&pause
  6. )
  7. del c:\1.txt
复制代码
发表于 2012-6-4 09:16:25 | 显示全部楼层
回复 3# zhujinhe
  1. @echo off
  2. set "printername=Brother"
  3. for /f "tokens=*" %%i in ('net view ^| find "\"') do (
  4.     net view %%~ni | find "%printername%"&&rundll32 printui.dll,PrintUIEntry /in /n \\%%~ni\%printername%&&echo 已经成功连接到位于%%~ni的打印机
  5. )
  6. pause
复制代码
 楼主| 发表于 2012-6-4 10:58:41 | 显示全部楼层
如果net view 的结果是服务器名称            注解

---------------------------------
\\助理                 分店
\\欧陆经典01           分店
\\欧陆经典02           分店
\\欧陆经典03           分店
\\欧陆经典04           分店
\\欧陆经典05           分店
\\欧陆经典06           分店
\\欧陆经典07           分店
\\欧陆经典09           分店
\\欧陆经典10           分店
\\欧陆经典11           分店
\\欧陆经典12           分店
\\欧陆经典13           分店
\\欧陆经典14           分店
\\欧陆经典15           分店
命令成功完成。
这样的形式该怎么改写呢?是截取第一个空格前的内容吗?怎么写?
 楼主| 发表于 2012-6-4 12:42:10 | 显示全部楼层
把tokens=* 改为tokens=1后解决了,还是自己的基础不行。
  1. @echo off
  2. set "printername=Brother"
  3. for /f "tokens=1" %%i in ('net view ^| find "\"') do (
  4.     net view %%~ni | find "%printername%"&&rundll32 printui.dll,PrintUIEntry /in /n \\%%~ni\%printername%&&echo 已经成功连接到位于%%~ni的打印机
  5. )
  6. pause
复制代码
发表于 2012-6-4 13:38:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 03:28 , Processed in 0.022278 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表