Board logo

标题: [文本处理] 批处理如何对上级目录的一个指定ini文本进行查找特定行、替换字符串和插入行内容操作 [打印本页]

作者: jyc19970330    时间: 2011-8-2 13:51     标题: 批处理如何对上级目录的一个指定ini文本进行查找特定行、替换字符串和插入行内容操作

本帖最后由 pcl_test 于 2016-9-8 11:09 编辑

假设一个批处理的上级目录有一个1.ini文件
格式如下
[AAA]
真=false

[BBB]
真=false

[CCC]
真=false

[DDD]
真=false

当然可能还有好多
使用批处理如何读入该文件并且搜索到[CCC],并且将[CCC]下改成"真=True',然后在"真=True"下面加入"路径=(当前目录)"
更改后就像这样
[AAA]
真=false

[BBB]
真=false

[CCC]
真=True
路径=C:\Windows

[DDD]
真=false


顺便问下,怎样进行逆操作(就是读入该文件并且搜索到[CCC],并且将[CCC]下改成"真=True',然后在下面删除"路径=(当前目录)")

望各位指教下
作者: tmplinshi    时间: 2011-8-2 14:19

本帖最后由 tmplinshi 于 2011-8-2 15:28 编辑
  1. nircmdc inisetval "..\1.ini" "CCC" "真" "True~n路径=%cd%"
复制代码
逆操作:
  1. nircmdc inisetval "..\1.ini" "CCC" "真" "false"
  2. nircmdc inidelval "..\1.ini" "CCC" "路径"
复制代码
http://nirsoft.net/utils/nircmd.zip
作者: jyc19970330    时间: 2011-8-2 14:54

回复 2# tmplinshi


    正向操作貌似无效啊
作者: tmplinshi    时间: 2011-8-2 15:27

本帖最后由 tmplinshi 于 2011-8-2 15:28 编辑

写错了,应该是 "..\1.ini"
作者: jyc19970330    时间: 2011-8-2 15:34

回复 4# tmplinshi
提示

    'nircmdc' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
作者: tmplinshi    时间: 2011-8-2 15:47

http://nirsoft.net/utils/nircmd.zip
作者: jyc19970330    时间: 2011-8-2 16:01

回复 6# tmplinshi


    能不能不要安装这个就完成呢
作者: tmplinshi    时间: 2011-8-2 17:45

修改:
  1. @echo off
  2. setlocal disabledelayedexpansion
  3. set file="..\1.ini"
  4. set []=#
  5. set #clear=#
  6. for /f "delims=" %%a in ('findstr /n .* %file%') do (
  7.     if defined #clear set "#clear=" >%file%
  8.     set var=%%a$
  9.     setlocal enabledelayedexpansion
  10.     set var=!var:*:=!
  11.     (
  12.         if /i "![]!!var:~0,2!" == "[CCC]真=" (
  13.             echo 真=True
  14.             echo 路径=!cd!
  15.         ) else (
  16.             echo,!var:~0,-1!
  17.             if "!var:~0,1!!var:~-2,-1!" == "[]" (
  18.                 for %%a in ("!var:~0,-1!") do (
  19.                     endlocal
  20.                     set []=%%~a
  21.                 )
  22.             ) else (
  23.                 endlocal
  24.             )
  25.         )
  26.     ) >>%file%
  27. )
  28. pause
复制代码
还原:
  1. @echo off
  2. setlocal disabledelayedexpansion
  3. set file="..\1.ini"
  4. set []=#
  5. set #clear=#
  6. for /f "delims=" %%a in ('findstr /n .* %file%') do (
  7.     if defined #clear set "#clear=" >%file%
  8.     set var=%%a$
  9.     setlocal enabledelayedexpansion
  10.     set var=!var:*:=!
  11.     (
  12.         if /i "![]!!var:~0,2!" == "[CCC]真=" (
  13.             echo 真=false
  14.         ) else (
  15.             if /i "!![]!!var:~0,3!" neq "[CCC]路径=" (
  16.                 echo,!var:~0,-1!
  17.                 if "!var:~0,1!!var:~-2,-1!" == "[]" (
  18.                     for %%a in ("!var:~0,-1!") do (
  19.                         endlocal
  20.                         set []=%%~a
  21.                     )
  22.                 ) else (
  23.                     endlocal
  24.                 )
  25.             )
  26.         )
  27.     ) >>%file%
  28. )
  29. pause
复制代码

作者: jyc19970330    时间: 2011-8-2 19:19

回复 8# tmplinshi


    多谢,已成功
作者: jyc19970330    时间: 2011-8-2 21:06

回复 8# tmplinshi


    要是再增加一个“文件=Xxx”(包括删除)
作者: tmplinshi    时间: 2011-8-2 21:16

回复 10# jyc19970330


添加:
  1. @echo off
  2. setlocal disabledelayedexpansion
  3. set file="..\1.ini"
  4. set []=#
  5. set #clear=#
  6. for /f "delims=" %%a in ('findstr /n .* %file%') do (
  7.     if defined #clear set "#clear=" >%file%
  8.     set var=%%a$
  9.     setlocal enabledelayedexpansion
  10.     set var=!var:*:=!
  11.     (
  12.         if /i "![]!!var:~0,2!" == "[CCC]真=" (
  13.             echo 真=True
  14.             echo 路径=!cd!
  15.             echo 文件=Xxx
  16.         ) else (
  17.             echo,!var:~0,-1!
  18.             if "!var:~0,1!!var:~-2,-1!" == "[]" (
  19.                 for %%a in ("!var:~0,-1!") do (
  20.                     endlocal
  21.                     set []=%%~a
  22.                 )
  23.             ) else (
  24.                 endlocal
  25.             )
  26.         )
  27.     ) >>%file%
  28. )
  29. pause
复制代码
删除:
  1. @echo off
  2. setlocal disabledelayedexpansion
  3. set file="..\1.ini"
  4. set []=#
  5. set #clear=#
  6. for /f "delims=" %%a in ('findstr /n .* %file%') do (
  7.     if defined #clear set "#clear=" >%file%
  8.     set var=%%a$
  9.     setlocal enabledelayedexpansion
  10.     set var=!var:*:=!
  11.     (
  12.         if /i "![]!!var:~0,2!" == "[CCC]真=" (
  13.             echo 真=false
  14.         ) else (
  15.             if /i "!![]!!var:~0,3!" neq "[CCC]路径=" (
  16.                 if /i "!![]!!var:~0,3!" neq "[CCC]文件=" (
  17.                     echo,!var:~0,-1!
  18.                     if "!var:~0,1!!var:~-2,-1!" == "[]" (
  19.                         for %%a in ("!var:~0,-1!") do (
  20.                             endlocal
  21.                             set []=%%~a
  22.                         )
  23.                     ) else (
  24.                         endlocal
  25.                     )
  26.                 )
  27.             )
  28.         )
  29.     ) >>%file%
  30. )
  31. pause
复制代码

作者: jyc19970330    时间: 2011-8-3 13:14

回复 11# tmplinshi


    感谢




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