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

[系统相关] 【已解决】批处理如何判断内网还是外网?

[复制链接]
发表于 2014-9-6 16:30:00 | 显示全部楼层 |阅读模式
本帖最后由 dnvplj 于 2014-10-18 11:56 编辑

请问各位朋友:如何“判断内网还是外网”,如果是外网就自动调用“C:\SOFT\GUANJI.EXE"程序,关闭计算机。
发表于 2014-9-6 20:03:14 | 显示全部楼层
判断什么?
 楼主| 发表于 2014-9-6 22:30:27 | 显示全部楼层
判断“计算机”,连的是互联网还是本公司的局域网。
发表于 2014-9-6 23:01:07 | 显示全部楼层

  1. REM 0.BAT
  2. @echo off
  3. ping -n 2 -w 200 223.6.6.6 >nul 2>nul && start "" "C:\SOFT\GUANJI.EXE"
  4. goto :eof
复制代码
 楼主| 发表于 2014-9-7 12:29:56 | 显示全部楼层
4楼的朋友您好,能有个提示吗?如外网提示为:“你正在使用外网”,内网提示为:“你正在使用外网”,没有连接网络提示为:你的计算机没有连接任何网络
发表于 2014-9-7 22:56:27 | 显示全部楼层
回复 5# dnvplj
  1. REM 0.BAT
  2. @echo off

  3. REM 设置外网主机地址(wwwhost)、局域网主机地址(geteway)
  4. set wwwhost=223.6.6.6
  5. set geteway=192.168.1.1

  6. ping -n 2 -w 200 %wwwhost% >nul 2>nul && (
  7.   echo 外网
  8. ) || (
  9.   ping -n 2 -w 50 %geteway% >nul 2>nul && (
  10.     echo 内网
  11.   ) || (
  12.     echo 没有连接网络
  13.   )
  14. )
  15. pause
  16. goto :eof
复制代码
 楼主| 发表于 2014-9-8 08:57:34 | 显示全部楼层
回复 6# yu2n
首先感谢您的回复,请教两个问题:一、如果IP地址是10或172开头和192.168.6.1的地址如何判断;二、223.6.6.6是那的地址,为何要使用他。多谢了
发表于 2014-9-8 12:53:10 | 显示全部楼层
回复 7# dnvplj
你只需要给一个外网主机地址、一个局域网主机地址。
223.6.6.6 是外网主机地址,你也可以换成 www.baidu.com
192.168.1.1 是局域网网关地址,你可以自行设置成任意局域网主机地址,只要这个局域网地址在线。
 楼主| 发表于 2014-9-8 13:11:51 | 显示全部楼层
回复 8# yu2n
如果在加一条“外网主机地址”和加两个“内网网关地址”,这样写对吗?
  1. REM 0.BAT
  2. @echo off

  3. REM 设置外网主机地址(wwwhost)、局域网主机地址(geteway)
  4. set wwwhost=223.6.6.6
  5. set wwwhost=www.sina.com
  6. set geteway=192.168.1.1
  7. set geteway=10.60.123.1
  8. set geteway=172.16.0.1

  9. ping -n 2 -w 200 %wwwhost% >nul 2>nul && (
  10.   echo 外网
  11. ) || (
  12.   ping -n 2 -w 50 %geteway% >nul 2>nul && (
  13.     echo 内网
  14.   ) || (
  15.     echo 没有连接网络
  16.   )
  17. )
  18. pause
  19. goto :eof
复制代码
发表于 2014-9-8 13:22:17 | 显示全部楼层
回复 9# dnvplj
这样设置变量达不到你要的效果。
同一个变量,多次赋值,只会保留最后的值。
如果只需要判断内网网,我之前的脚本就可以了。
如果要判断几个IP地址是否能够连通,那就不该这么写。
 楼主| 发表于 2014-9-8 13:40:26 | 显示全部楼层
公司是一个大网,分公司是小局域网,网关都不一样,能否帮我按九楼的要求改一下吗?
 楼主| 发表于 2014-9-8 13:41:21 | 显示全部楼层
回复 10# yu2n
公司是一个大网,分公司是小局域网,网关都不一样,我想用一下文件判断多个网关,能否帮我按九楼的要求改一下吗?
发表于 2014-9-8 14:36:19 | 显示全部楼层
回复 12# dnvplj
你可以针对每一个IP地址写通、不通的情况下,执行的命令。
  1. REM 0.BAT
  2. @echo off

  3. set host=223.6.6.6
  4. ping -n 2 -w 200 %host% >nul 2>nul
  5. if %ERRORLEVEL%==0 (
  6.   echo, %host% 通
  7. ) else (
  8.   echo, %host% 不通
  9. )

  10. set host=www.sina.com
  11. ping -n 2 -w 200 %host% >nul 2>nul
  12. if %ERRORLEVEL%==0 (
  13.   echo, %host% 通
  14. ) else (
  15.   echo, %host% 不通
  16. )

  17. set host=192.168.1.1
  18. ping -n 2 -w 200 %host% >nul 2>nul
  19. if %ERRORLEVEL%==0 (
  20.   echo, %host% 通
  21. ) else (
  22.   echo, %host% 不通
  23. )

  24. set host=10.60.123.1
  25. ping -n 2 -w 200 %host% >nul 2>nul
  26. if %ERRORLEVEL%==0 (
  27.   echo, %host% 通
  28. ) else (
  29.   echo, %host% 不通
  30. )

  31. set host=172.16.0.1
  32. ping -n 2 -w 200 %host% >nul 2>nul
  33. if %ERRORLEVEL%==0 (
  34.   echo, %host% 通
  35. ) else (
  36.   echo, %host% 不通
  37. )
  38. pause
复制代码
 楼主| 发表于 2014-9-8 15:18:03 | 显示全部楼层
回复 13# yu2n
如果通就调用:C:\SOFT\GUANJI.EXE文件,写到那个位置
发表于 2014-9-8 16:14:46 | 显示全部楼层
回复 14# dnvplj

写在每行的echo, %host% 通的下面,如下所示:

  1. set host=172.16.0.1
  2. ping -n 2 -w 200 %host% >nul 2>nul
  3. if %ERRORLEVEL%==0 (
  4.   echo, %host% 通
  5.   start "" "C:\SOFT\GUANJI.EXE"
  6. ) else (
  7.   echo, %host% 不通
  8. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 21:09 , Processed in 0.033887 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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