Board logo

标题: [文本处理] 批处理如何查找指定ini文件里的特定内容并修改/替换相关参数值? [打印本页]

作者: TCM    时间: 2015-11-5 22:02     标题: 批处理如何查找指定ini文件里的特定内容并修改/替换相关参数值?

本帖最后由 pcl_test 于 2016-6-15 21:29 编辑

比如,我有一个A.INI文件,用批处理查找
# basedir1 = .....
# basedir2 = .....
# basedir3 = .....
# basedir4 = .....
分别替换为
basedir1=C:\WEB\
basedir2=D:\WEB\
basedir3=E:\WEB\
basedir4=F:\WEB\
求各位大神帮忙详细写下吧!
作者: DAIC    时间: 2015-11-5 22:10

  1. sed "s/# basedir1 =.*/basedir1=C:\\WEB\\/; s/# basedir2 =.*/basedir2=D:\\WEB\\/; s/# basedir3 =.*/basedir3=E:\\WEB\\/; s/# basedir4 =.*/basedir4=F:\\WEB\\/" a.ini > b.ini
复制代码

作者: TCM    时间: 2015-11-5 22:24

能不能不用第三方,直接用批处理写出来呢?请大神给出个完整代码
作者: DAIC    时间: 2015-11-5 22:33

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in ('type "a.ini"') do (
  4.     set "str1=%%i"
  5.     if "!str1:# basedir1 =!" neq "%%i" (
  6.         echo basedir1=C:\WEB\
  7.     ) else if "!str1:# basedir2 =!" neq "%%i" (
  8.         echo basedir2=D:\WEB\
  9.     ) else if "!str1:# basedir3 =!" neq "%%i" (
  10.         echo basedir3=E:\WEB\
  11.     ) else if "!str1:# basedir4 =!" neq "%%i" (
  12.         echo basedir4=F:\WEB\
  13.     ) else (
  14.         echo,%%i
  15.     )
  16. ))>b.ini
复制代码

作者: TCM    时间: 2015-11-5 23:09

呵呵,太感谢了,完美解决了问题
作者: houxiren    时间: 2016-6-15 17:41

回复 4# DAIC


    先生,您好。如果要保留成原来的文件名a.ini怎么办?
作者: gawk    时间: 2016-6-15 20:15

回复 6# houxiren


4楼代码末尾加一行:
  1. move /y b.ini a.ini
复制代码

作者: houxiren    时间: 2016-6-16 22:09

回复 7# gawk


    谢谢您。实现了目的。
作者: houxiren    时间: 2016-6-22 12:49

本帖最后由 pcl_test 于 2016-6-22 14:21 编辑

回复 7# gawk
gawk先生好。又来请教,谢谢。
http://www.bathome.net/thread-40809-1-1.html




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