标题: [网络连接] 批处理如何在断网或者网卡被禁用取不到IP的情况下正常的显示? [打印本页]
作者: Speed乄Jay 时间: 2017-9-6 18:07 标题: 批处理如何在断网或者网卡被禁用取不到IP的情况下正常的显示?
- @echo off
- ::首页显示IP地址
- for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0')do for /f "tokens=3 delims=." %%b in ("%%a") do (set IP1=%%b)
- for /f "tokens=4" %%c in ('route print^|findstr 0.0.0.0.*0.0.0.0')do for /f "tokens=4 delims=." %%d in ("%%c") do (set IP2=%%d)
- for /f "tokens=3" %%e in ('route print^|findstr 0.0.0.0.*0.0.0.0')do (set getway=%%e)
- for /f "tokens=4" %%f in ('route print^|findstr 0.0.0.0.*0.0.0.0')do (set IP=%%f)
- set a= %IP1%
- set b= %IP2%
- set c=1
- if %IP1%==27 (set /a c=4)
- if %IP1%==28 (set /a c=3)
- if %IP1%==29 (set /a c=2)
- set /a d=%b%-50
- set /a e=%b%-10
- if %b% gtr 139 (set /a b=d) else (set /a b=e)
- echo 台席号:%c%楼%b%号
- echo IP地址:%IP%
- echo 网关:%getway%
- pause
复制代码
这是小弟写的一个脚本,根据IP来判断和显示所对应的台席号,目前有个问题,如果电脑在断网或者网卡被禁用的情况下,这段脚本就无法执行下去 ,请教各位高手、版主大大,如果如何在断网或者网卡被禁用的情况下抓取不到IP地址还能正常的显示一段提示比如:无法获取此台席IP地址...这样类似的提示,让后面的代码能够顺利的运行。
作者: Batcher 时间: 2017-9-6 20:21
断网或者网卡被禁用的情况下,删掉 @echo off 看看到哪一步出错了,加个 if 判断。
作者: Speed乄Jay 时间: 2017-9-7 08:36
回复 2# Batcher
好的,我去掉看看,不知道if如何落笔。。。。
作者: Speed乄Jay 时间: 2017-9-7 09:57
回复 2# Batcher
执行到这 a 和 b都等于 ,我在下面做了判断如果a和b都等于空的话,给他赋值,- if %a%==%null% (set /a a=0)
- if %b%==%null% (set /a b=0)
复制代码
可还是没用,请问大大,我这样写的有问题吗?
作者: Batcher 时间: 2017-9-7 20:27
回复 4# Speed乄Jay
语法上应该是这样比较好:复制代码
至于能否解决问题,你先测试一下吧。
作者: Batcher 时间: 2017-9-7 20:28
回复 3# Speed乄Jay
这里有 if 命令的教程:
http://bbs.bathome.net/thread-2576-1-1.html
作者: Speed乄Jay 时间: 2017-9-7 22:25
回复 5# Batcher
我试了,把网卡禁用掉,a和b就又什么东西都没获取到,最后把代码改成下面这样,也不行。- ::首页显示IP地址
- for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0')do for /f "tokens=3
- delims=." %%b in ("%%a") do (if "%%b"=="" (set IP1=%%b+1) else (set IP1=%%b))
- for /f "tokens=4" %%c in ('route print^|findstr 0.0.0.0.*0.0.0.0')do for /f "tokens=4
- delims=." %%d in ("%%c") do (if "%%d"=="" (set IP1=%%d+1) else (set IP2=%%d))
- for /f "tokens=3" %%e in ('route print^|findstr 0.0.0.0.*0.0.0.0')do (set getway=%%e)
- for /f "tokens=4" %%f in ('route print^|findstr 0.0.0.0.*0.0.0.0')do (set IP=%%f)
- set a=%IP1%
- set b=%IP2%
- set c=1
- if %IP1%==27 (set /a c=4)
- if %IP1%==28 (set /a c=3)
- if %IP1%==29 (set /a c=2)
- set /a d=%b%-50
- set /a e=%b%-10
- if %b% geq 140 (set /a b=d) else (set /a b=e)
- echo 台席号:%c%楼%b%号
- echo IP地址:%IP%
- echo 网关:%getway%
- pause
复制代码
头好大啊。
作者: Batcher 时间: 2017-9-8 07:24
回复 7# Speed乄Jay
用5楼的方法在获取不到a和b的时候提示:无法获取此台席IP地址。你的原始需求不是这样的吗?
作者: 不知道是谁 时间: 2017-9-8 18:00
本帖最后由 不知道是谁 于 2017-9-8 18:10 编辑
回复 7# Speed乄Jay
翻了下自用的一个批处理,断网状态下是可以的,但如果是禁用掉那就不行了
你可以测试下
netsh interface ip show config- rem 搜索内网DNS,如果未找到则判断为外网
- netsh interface ip show config|findstr "10.137.252.3 10.137.195.7" >nul&&goto lan
- echo 可能是外网设备,不进行额外设置. . .
- goto end
复制代码
作者: Speed乄Jay 时间: 2017-9-10 08:24
回复 9# 不知道是谁
多谢。
作者: Speed乄Jay 时间: 2017-9-10 08:25
回复 8# Batcher
对。现在只要是断网或者网卡被禁用就出现问题了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |