无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4408|回复: 17
打印 上一主题 下一主题

请教批处理高手, 怎样用批处理读取ini文件某些键的值?

[复制链接]
跳转到指定楼层
1#
发表于 2021-3-8 13:06:29 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
想自己搞个批处理,读取ini某些键的值,然后用这些值修改IP地址,未完工的代码如下:
  1. @ECHO OFF
  2. IF EXIST 1.ini (
  3. ::下面是读取ini对应的值代码

  4. ::IP地址
  5. set staticip=
  6. ::子网掩码
  7. set subnetmask=
  8. ::网关
  9. set gateways=

  10. wmic nicconfig where ipenabled=true call enablestatic(%staticip%),(%subnetmask%)
  11. wmic nicconfig where ipenabled=true call setgateways(%gateways%)
  12. )

  13. exit
复制代码
1.ini文件的内容如下:
  1. [okm]
  2. abc=678
  3. zxc=456
  4. qwe=789
  5. cxz=147

  6. [cbd]
  7. abc=123
  8. qwe=321
  9. qaz=534

  10. wsx=765
  11. edc=258

  12. [NET]
  13. IP地址=192.168.1.168
  14. 子网掩码=255.255.255.0
  15. 网关=192.168.1.1
复制代码
通过百度找了一些读取ini键的代码, 但是只能读英文键的值, 例如下面的代码, okm abc 读取成功,NET IP地址读不到值:
  1. ::https://zhidao.baidu.com/question/604778692
  2. @echo off&setlocal ENABLEDELAYEDEXPANSION
  3. call :解析 1.ini
  4. call :提取 okm abc
  5. call :提取 NET IP地址
  6. goto :eof


  7. :解析 [参数#1=ini文件路径]
  8. set "op="
  9. for /f " usebackq tokens=1* delims==" %%a in ("%~1") do (
  10.     if "%%b"=="" (
  11.         set "op=%%a"
  12.     ) else (
  13.         set "##!op!#%%a=%%b"
  14.     )
  15. )
  16. goto :eof


  17. :提取 [参数#1=Option] [参数#2=Key]
  18. echo,Option=%~1,Key=%~2,Value=!##[%~1]#%~2!
  19. pause
  20. goto :eof
复制代码
另外, 怎样把读取ini值的代码,加到最上面的代码中来修改IP地址呢? 期待高手能指点一二, 非常感谢!
2#
 楼主| 发表于 2021-3-8 13:18:08 | 显示全部楼层
阿非 发表于 2021-3-8 13:12
建议发到脚本讨论区
http://bbs.wuyou.net/forum.php?mod=forumdisplay&fid=36

感谢提醒, 怎么移动过去?
回复

使用道具 举报

3#
 楼主| 发表于 2021-3-8 13:19:19 | 显示全部楼层
荣耀 发表于 2021-3-8 13:16
通过tokens分割= 利用findstr正则匹配ip段。
就这样。
楼主这么多求助帖,学而不进啊。

感谢鞭策, 真是惭愧, 对批处理一直一知半解
回复

使用道具 举报

4#
 楼主| 发表于 2021-3-8 22:00:23 | 显示全部楼层
nttwqz 发表于 2021-3-8 18:49
下载NSIS自己编译

感谢大侠帮忙, 还看不懂, 先收藏

点评

给你玩玩: [attachimg]476356[/attachimg]  详情 回复 发表于 2021-3-9 12:13
给你玩玩: [attachimg]476353[/attachimg]  详情 回复 发表于 2021-3-9 12:06
回复

使用道具 举报

5#
 楼主| 发表于 2021-3-9 14:30:00 | 显示全部楼层

感谢大侠帮助, 能公开批处理吗?

点评

能啊,批处理如下 : @echo off for /f "tokens=*" %%i in ('%~sdp0inifile.exe %~sdp0test.ini NET IP地址') do ( set "aa=%%i" ) echo %aa% pause  详情 回复 发表于 2021-3-9 18:00
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-6 19:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表