[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

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

谢谢!

回复 4# ShowCode


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

TOP

谢谢2位大神的解答!十分感谢!

TOP

回复 3# WindCat


set /a n=0
/a 选项用于数学计算。
变量初始化是单纯的赋值操作,不需要 /a 选项。
1

评分人数

测试代码之前请做好备份

TOP

  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
复制代码

TOP

本帖最后由 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
复制代码

TOP

返回列表