Board logo

标题: [文本处理] 请教大神!批处理获取文件中的IP地址并赋值成为变量 [打印本页]

作者: ynqznet    时间: 2017-5-24 11:21     标题: 请教大神!批处理获取文件中的IP地址并赋值成为变量

有一个文件名称为iennfr2012.drv,其中第一行内容为IP=192.168.1.250

现在我想实现的效果是,读取文件内容,并且把IP这行的数字部分(也就是去掉”IP=“这3个字符)读取并赋值成为变量。

现在我只知道 type iennfr2012.drv | findstra ip 但是这样读出来的结果不是纯数字,不能继续我后面的操作。

谢谢!
作者: taofan712    时间: 2017-5-25 16:21

本帖最后由 taofan712 于 2017-5-25 16:32 编辑
  1. @echo off
  2. for /f "tokens=2 delims==" %%a in ('findstr /ib "ip=" iennfr2012.drv') do echo;%%a
  3. pause
复制代码

作者: WindCat    时间: 2017-5-25 20:43

  1. @echo off
  2. title 取IP
  3. :: By:Neko Piao, 2017-05-25
  4. set fileName=iennfr2012.drv
  5. ::set fileName=%1
  6. ::取第 一 行
  7. setlocal enabledelayedexpansion
  8. for /f "tokens=1 delims=" %%i in (%fileName%) do (
  9. set /a n+=1
  10. if !n!==1 set Line_of_text=%%i
  11. )
  12. setlocal disabledelayedexpansion
  13. set /a n=0
  14. ::不要问我为什么这个set在这里,遇到过莫名bug要放到这里重置.虽然这次不需要,不过也不妨碍什么,请让它就在这里吧owo
  15. ::取前后字段
  16. for /f "tokens=2 delims==" %%a in ("%Line_of_text%") do (
  17. set "ip=%%a")
  18. for /f "tokens=1-4 delims=." %%a in ("%ip%") do (
  19. set "ip_1=%%a"&set "ip_2=%%b"&set "ip_3=%%c"&set "ip_4=%%d"
  20. )
  21. echo %ip_1%.%ip_2%.%ip_3%.%ip_4%
  22. pause
复制代码

作者: ShowCode    时间: 2017-5-25 20:56

回复 3# WindCat


set /a n=0
/a 选项用于数学计算。
变量初始化是单纯的赋值操作,不需要 /a 选项。
作者: ynqznet    时间: 2017-6-6 11:57

谢谢2位大神的解答!十分感谢!
作者: 老刘1号    时间: 2017-6-6 19:53

回复 4# ShowCode


    主要因为批处理是弱类型语言
不需要声明变量类型
不过即使将a赋值为字符串碰到数值运算时Set也可以自动改变类型
个人比较习惯Set/a重置,不管有没有多次调用都会习惯性的重置




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