标题: [网络连接] [已解决]批处理获取ip地址并判断的代码,能否进一步简化? [打印本页]
作者: ygqiang 时间: 2011-12-28 10:44 标题: [已解决]批处理获取ip地址并判断的代码,能否进一步简化?
本帖最后由 ygqiang 于 2011-12-30 07:04 编辑
- for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b
- echo %fsip%
- Set fsip=%fsip: =%
- echo 去掉ip前面的空格
- echo %fsip%
-
- if "%fsip%" == "10.10.9.200" exit
- if "%fsip%" == "10.10.93.100" exit
- if "%fsip%" == "10.10.94.200" exit
- if "%fsip%" == "10.10.127.200" exit
-
- ;--------------------------------------------------------------------------------------------------
-
- for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do set i=%%i
- for /f "tokens=1,2,3 delims=." %%i in ("%i%") do (set a=%%i.%%j.%%k)
- set Gateway=%a%.1
-
- echo %a%.1
-
- if "%a%" == "10.10.9" set a=%a%.200 & goto :next
- if "%a%" == "10.10.93" set a=%a%.100 & goto :next
- if "%a%" == "10.10.94" set a=%a%.200 & goto :next
- if "%a%" == "10.10.127" set a=%a%.200 & goto :next
- exit
-
- :next
复制代码
我要实现的目的是:
先判断ip地址是否是(10.10.9.200 10.10.93.100 10.10.94.200 10.10.127.200)其中的一个,如果是,就直接退出;如果不是,就继续下面的判断
判断ip地址前面三位是否是(10.10.9 10.10.93 10.10.94 10.10.127)其中的一个,如果是,就跳转到:next,否则就退出
上面的批处理,是否有简化的可能?谢谢
作者: awk 时间: 2011-12-28 15:41
你既然知道怎样用空格做为列分隔符获取IP地址,为何开头还要使用那么蛋疼的方法去替换空格呢?
作者: awk 时间: 2011-12-28 15:44
连续的4行if改成if...else...的结构,减少执行代码时浪费在毫无意义的重复判断上面的时间。
作者: ygqiang 时间: 2011-12-28 18:29
不好意思。
上面的代码,都是从论坛或者qq好友 获得的。
能否帮忙整体修改下?谢谢。
作者: ygqiang 时间: 2011-12-28 23:32
- for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b
-
- echo %fsip%
-
- Set fsip=%fsip: =%
-
- echo 去掉ip前面的空格
-
- echo %fsip%
- echo "%fsip%"|findstr "10.10.9.200 10.10.93.100 10.10.94.200 10.10.127.200">nul&&exit
-
- 后面是别的代码
复制代码
这是有人给出的代码。
作者: awk 时间: 2011-12-29 09:30
- @echo off
- for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do (
- set fsip=%%i
- )
- echo %fsip%
- if "%fsip%" equ "10.10.9.200" (
- goto :end
- ) else if "%fsip%" equ "10.10.93.100" (
- goto :end
- ) else if "%fsip%" equ "10.10.94.200" (
- goto :end
- ) else if "%fsip%" equ "10.10.127.200" (
- goto :end
- )
-
- for /f "tokens=1,2,3 delims=." %%i in ("%fsip%") do (
- set a=%%i.%%j.%%k
- )
- set Gateway=%a%.1
- echo %a%.1
- if "%a%" equ "10.10.9" (
- set a=%a%.200
- ) else if "%a%" equ "10.10.93" (
- set a=%a%.100
- ) else if "%a%" equ "10.10.94" (
- set a=%a%.200
- ) else if "%a%" equ "10.10.127" (
- set a=%a%.200
- )
-
- :end
复制代码
作者: ygqiang 时间: 2011-12-29 23:36
本帖最后由 ygqiang 于 2011-12-30 10:09 编辑
多谢楼上。
初步测试,代码可以正常运行。复制代码
作者: awk 时间: 2011-12-30 09:16
回复 7# ygqiang
47行、82行可以删掉
作者: ygqiang 时间: 2011-12-30 10:10
多谢楼上。7楼已经重新更新了代码。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |