Board logo

标题: 如何提取本机的ip地址,以及ip地址的最后一位? [打印本页]

作者: crazyforcrane     时间: 2008-9-19 12:41    标题: 如何提取本机的ip地址,以及ip地址的最后一位?

请教各位大侠,我有个脚本要使用ip地址,以及ip地址的最后一位,
比如,我要在一个命令里,使用echo %ip% clnt%ip最后一位%>c:\windows\test 文件里,在这里%ip%为本机ip,%ip最后一位%为ip地址的最后一位,并且如果不足3位的话,要凑足三位,比如,127.0.0.1,这里ip地址的最后一位要提取001,请问,各位大侠,怎么才能做到?

先在这里谢谢各位的回答!!!


还有一个问题,可能有人问了很多遍了,就是比如我的D盘里有个文件夹,D:\文件夹,我想把这个文件夹的快捷方式发送到桌面一个,开始程序里一个,怎么做到?

最后一个问题,批处理运行的时候,会出现一个黑色的窗口,怎么才能让批处理运行的时候,什么反应都没有那 ?

[ Last edited by crazyforcrane on 2008-9-19 at 12:55 PM ]
作者: wxcute     时间: 2008-9-19 12:53
ping %computername%

ipconfig /all
可得到本机在局域网的IP
外网的IP不会,如果是直接用猫上网ping %computername%也可得到外网IP。
作者: crazyforcrane     时间: 2008-9-19 12:56
关键我是想用在批处理里,而不是手工去添加这些文件,如果是手工添加的话,哪么就没有这些问题了。而所说的用ping或者ipconfig提取ip的,我又不会呀。。。

[ Last edited by crazyforcrane on 2008-9-19 at 01:39 PM ]
作者: crazyforcrane     时间: 2008-9-19 13:12
各位大哥,有没有人能帮帮我啊......
作者: wxcute     时间: 2008-9-19 13:13
用ping会慢一点,改用ipconfig会好很多,ipconfig的答案已经有人给了,我就用ping写个吧。
@echo off
for /f "tokens=2 delims=[]" %%i in ('ping %computerName%') do (
 for /f "tokens=1-4 delims=." %%j in ("%%i") do (
  call :setv 00%%j 00%%k 00%%l 00%%m ip_1 ip_2 ip_3 ip_4 ip
 )
)
echo —————IP:%ip%
echo IP最后一位为:%ip_4%
pause
:setv
 set %5=%1
 set %6=%2
 set %7=%3
 set %8=%4
 set %9=%ip_1:~-3%.%ip_2:~-3%.%ip_3:~-3%.%ip_4:~-3%
 set ip_4=%ip_4:~-3%

作者: crazyforcrane     时间: 2008-9-19 13:39
谢谢各位高手,虽然我还没有试试看好不好用,但总算有点眉目了。
作者: crazyforcrane     时间: 2008-9-19 13:49
还是有一个问题,那就是除了第四位之外,别的都是有几位就要几位的,比如第二位是1的话,就要1而不要001
作者: wxcute     时间: 2008-9-19 13:53
改改就好了。
@echo off
for /f "tokens=2 delims=[]" %%i in ('ping %computerName%') do (
 for /f "tokens=1-4 delims=." %%j in ("%%i") do (
  call :setv %%j %%k %%l 00%%m ip_4 ip
 )
)
echo —————IP:%ip%
echo IP最后一位为:%ip_4%
pause
:setv
 set %5=%4
 set %6=%1.%2.%3.%ip_4:~-3%
 set ip_4=%ip_4:~-3%

作者: crazyforcrane     时间: 2008-9-19 14:27
谢谢,谢谢,可惜我都不会,什么都得问你们,谢谢各位。。。
作者: HAT     时间: 2008-9-19 14:41

@echo off
for /f "tokens=15" %%a in ('ipconfig^|findstr /i "IP"') do (
  set IP=%%a
  set IPlast=%%~xa
  goto :show
)
:show
set IPlast=100%IPlast:~1%
set IPlast=%IPlast:~-3%
>C:\windows\test echo %IP% clnt%IPlast%

作者: hackate     时间: 2008-9-19 18:34
其实楼上的方法都不是很妥当.为什么?
如果你是用路由上的网,用ipconfig,ping等是获取不了自己的外网IP的,,
这个问题比较麻
作者: radem     时间: 2008-9-19 20:02


  Quote:
Originally posted by hackate at 2008-9-19 06:34 PM:
其实楼上的方法都不是很妥当.为什么?
如果你是用路由上的网,用ipconfig,ping等是获取不了自己的外网IP的,,
这个问题比较麻

LZ要的是本机IP就可以了
作者: HAT     时间: 2008-9-19 20:04    标题: Re 11楼

楼主的标题写的很清楚:
如何提取本机的ip地址,以及ip地址的最后一位?