Board logo

标题: [文件操作] 批处理怎样取字符? [打印本页]

作者: kanlianhui    时间: 2008-6-17 13:28     标题: 批处理怎样取字符?

我想把ipconfig这个命令其中的
IP Address. . . . . . . . . . . . : 192.168.243.18
这行的192.168.243.18追加入1.txt该怎么写?我用|find和 for命令就是不能实现。
作者: 梦想种子    时间: 2008-6-17 13:58

  1. @echo off
  2. for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP"') do (
  3. for %%j in (%%i) do echo %%j>>1.txt
  4. )
  5. pause
复制代码

作者: kanlianhui    时间: 2008-6-17 14:05

@echo off
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP"') do (
for %%j in (%%i) do echo %%j>>1.txt
)
pause
楼上的那个 %%i的值会是不是两个吗? :前的一个和:后的一个?????????
我也问道一个
@echo off
for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
echo %ip% >>1.txt
pause
不过~ tokens=15 这里不太明白,为什么是15???什么意思????

[ 本帖最后由 kanlianhui 于 2008-6-17 14:14 编辑 ]
作者: 梦想种子    时间: 2008-6-17 14:23     标题: 回复 3楼 的帖子

运行 'ipconfig ^| find /i "ip address"'  这句后,得到:
        IP Address. . . . . . . . . . . . : 192.168.1.102

for /f 中没有delims参数,那么空格就是其中一个默认值,即以空格为分隔符。
所以,假如tokens=1,则得到IP;tokens=2,则得到Address.;tokens=3,则得到.
依此类推,tokens=15,就得到192.168.1.102了。

IP/Address././././././././././././:/192.168.1.102

用/代替空格,可分成15份,当然最后一份,即第15份就是我们所需的内容了。

--------------
同样,2楼的代码中,tokens=2 delims=:
就是把        IP Address. . . . . . . . . . . . : 192.168.1.102分成

IP Address. . . . . . . . . . . . / 192.168.1.102

tokens=2就是取第2份内容,即" 192.168.1.102"。
第二个for语句只是为了去掉IP地址前面的一个小空格。

[ 本帖最后由 梦想种子 于 2008-6-17 14:27 编辑 ]
作者: lovelymorning    时间: 2008-6-18 03:56

  1. for /f "tokens=15" %%i in ('ipconfig /all^|find "IP Address"') do echo %%i>>1.txt
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2