Board logo

标题: [网络连接] 请问如何判断局域网内某一台机子能否ping通 [打印本页]

作者: chineselzh    时间: 2008-9-4 17:37     标题: 请问如何判断局域网内某一台机子能否ping通

比如我想查找局域网内一台名叫s13的机子,如果发现这台机子存在或者说是打开着的,那么就从上面copy一个名叫a.txt的文件,如果机子关机或没打开,那么就exit,不知道能不能实现?谢谢!


正如三楼所说:我是想知道某一台机子是否能ping通。。。

[ 本帖最后由 chineselzh 于 2008-9-5 22:04 编辑 ]
作者: Batcher    时间: 2008-9-4 20:51

撇开批处理不谈,你准备如何手工判断“这台机子存在或者说是打开着的”?
作者: youxi01    时间: 2008-9-5 09:18

他的意思可能是 S13 的机子开机了(可以ping通),则复制...
作者: AppleWolf    时间: 2008-9-6 00:34

我觉得给楼主评分错误,虽然楼主并未说明是用CMD方式,但是实际上谁都看得懂,楼主的意思是,如何在批处理中判断局域网中某台计算机是否处于开机方式,并根据其方式做出相应的处理。
事实上,我也在试验,在寻找这个问题的解决方法,因为实际应用中特别是批处理自动备份系统中这点很重要。
但是头大的是,现在的XP之类的系统自带的防火墙怕是PING不通了,用PING的方式是不合理的。
方法正在寻找中。。。。。。。。。
作者: Batcher    时间: 2008-9-6 01:00

同意楼上观点:机子是否开着,通过PING的方式是无法准确判断的。
作者: AppleWolf    时间: 2008-9-6 02:59

  1. strMachines = "atl-dc-01;atl-win2k-01;atl-nt4-01;atl-dc-02"
  2. aMachines = split(strMachines, ";")
  3. For Each machine in aMachines
  4.     Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
  5.         ExecQuery("select * from Win32_PingStatus where address = '"_
  6.             & machine & "'")
  7.     For Each objStatus in objPing
  8.         If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
  9.             WScript.Echo("machine " & machine & " is not reachable")   
  10.         End If
  11.     Next
  12. Next
复制代码
这是微软的代码
作者: shqf    时间: 2008-9-6 08:58

ping通后,还是要用net use映射,再copy,所以我直接是用net use 作判断的,映射不成功的话,说明机没开。




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