中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 10:52
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【求助】获取Ip地址串后无法字符串处理,求教 查看 847 回复 7
楼 主 【求助】获取Ip地址串后无法字符串处理,求教 发表于 2008-08-01 16:58 ·  中国 上海 电信
新手上路
积分 11
发帖 4
注册 2008-07-31 15:32
18年会员
UID 122492
性别 男
状态 离线
@echo off & setlocal EnableDelayedExpansion
rem get Ip from ipconfig
for /f "delims=: tokens=2" %%i in ('ipconfig ^| find /I "IP Address"') do set Ip=%%i
set Ip=!Ip: =!
echo {!Ip!}

执行的结果是
}192.168.175.73

请问是为什么?我预想的输出是{192.168.175.73}

我实际是想用这个Ip去做些配置文件的比对,由于上述的问题,导致后续的比对都无法成功。向各位求教,谢谢了!
2 发表于 2008-08-01 17:06 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
echo {%ip%}
3 发表于 2008-08-01 17:21 ·  中国 北京 联通
社区乞丐
积分 -61
发帖 37
注册 2008-04-19 17:10
18年会员
UID 116329
性别 男
状态 离线

@echo off & setlocal
rem get Ip from ipconfig
for /f "delims=: tokens=2" %%i in ('ipconfig ^| find /I "IP Address"') do set Ip=%%i
set Ip=%Ip: =%
echo {%Ip%}
4 发表于 2008-08-02 13:33 ·  中国 上海 浦东新区 电信
新手上路
积分 11
发帖 4
注册 2008-07-31 15:32
18年会员
UID 122492
性别 男
状态 离线
谢谢楼上的解答,为什么用了变量延迟后反而得不到正确结果呢,能否给我再指点迷津下,谢谢啦!
5 发表于 2008-08-02 14:13 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
楼主可以先改成 echo {!Ip!}>>output.txt,
用记事本打开后可以看到有一个黑方块吧,不可见字符。
用UltraEdit打开后看到这个黑方块是个回车0D,它会把光标移到行首,并输出其后的内容。

%%忽略了不可见字符,事实上,%%没有完全显示环境变量的能力,比如环境变量包含了一个换行,%%也只能显示第一行的内容。
6 发表于 2008-08-02 14:15 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
另外一点就是,echo到控制台会解释执行控制字符(或不可见字符),并不是字符串本身。echo到文件可能可以保留原字符串。
7 发表于 2008-08-02 14:23 ·  中国 安徽 马鞍山 电信
新手上路
积分 10
发帖 4
注册 2007-12-10 16:18
18年会员
UID 105240
性别 男
状态 离线
直接
echo %ip%
就可以了。
8 发表于 2009-03-03 11:55 ·  中国 吉林 长春 电信
新手上路
积分 10
发帖 7
注册 2009-03-01 06:46
17年会员
UID 140264
性别 男
状态 离线
又学一招
论坛跳转: