Board logo

标题: [文本处理] 批处理如何修改ini文件指定键值对? [打印本页]

作者: baje4391    时间: 2013-11-22 15:34     标题: 批处理如何修改ini文件指定键值对?

本帖最后由 pcl_test 于 2017-1-6 04:45 编辑

我有一组数值,d.ini文件。内容为
[Database]
DBMS=O84 ORACLE 8.0.4
Database=
UserId=
DatabasePassword=
ServerName=kthis
LogId=HMISW_A2
Lock=
DbParm="MixedCase=0 ,CnnPool='Yes'"

[EGYKGL]
CKDM = 1

[EGYFGL]
KFDM=A2
#ZYKFDM=03
CKBH=1
ZYKFDM=03

上面红色的区域=后面的数值改变。当然。这2个数值并不是固定的。但是我想改变为我需要的数值。而不改变整个INI内容的结构。请哪位大大帮帮忙。。
作者: 1270697389    时间: 2013-11-22 16:08

本帖最后由 1270697389 于 2013-11-22 16:09 编辑

@echo off&setlocal enabledelayedexpansion
set /p i=输入文件名:
set /p s=请输入被替换的值:
set /p r=输入替换的值:
(for /f "delims=" %%a in (%i%) do (
     set/a n+=1
     set "str=%%a"
     if "!str:%s%=%%r!"=="%%a" (
             echo,%%a
     ) else (
        echo,!str:%s%=%r%!
        set/a m=n
     )
))>$
move $ %i%
作者: laolong    时间: 2013-11-22 19:21

其实专门有一个小工具就是针对 ini 文件的,功能强大、方便: inifile.exe
作者: apang    时间: 2013-11-22 20:10

  1. @echo off
  2. for /f "tokens=*" %%i in ('findstr /n .* D.INI') do (
  3.     for /f "tokens=1*delims==" %%a in ("%%i$") do (
  4.         set "a=%%a" & set "b=%%b"
  5.         setlocal enabledelayedexpansion
  6.         set "a=!a:*:=!"
  7.         if "!b!" neq "" (
  8.             if /i "!a!"=="LogId" (
  9.                 echo,!a!=值1
  10.             ) else (
  11.                 if /i "!a!"=="KFDM" (
  12.                     echo,!a!=值2
  13.                 ) else echo,!a!=!b:~,-1!
  14.             )               
  15.         ) else echo,!a:~,-1!
  16.         endlocal
  17.     )
  18. )
  19. pause
复制代码

作者: baje4391    时间: 2013-11-26 08:27

多谢各位大大~
作者: apang    时间: 2013-11-26 09:09

4#搞复杂了
  1. @echo off
  2. for /f "delims=" %%a in ('findstr /n .* a.txt') do (
  3.     set "str=%%a"
  4.     setlocal enabledelayedexpansion
  5.     set "str=!str:*:=!"
  6.     if /i "!str:~,6!"=="LogId=" (
  7.         echo,LogId=1
  8.     ) else (
  9.         if /i "!str:~,5!"=="KFDM=" (
  10.             echo,KFDM=2
  11.         ) else echo,!str!
  12.     )
  13.     endlocal
  14. )
  15. pause
复制代码





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