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

[文本处理] 批处理如何修改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: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%
初九的冬天

TOP

其实专门有一个小工具就是针对 ini 文件的,功能强大、方便: inifile.exe

TOP

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

TOP

多谢各位大大~

TOP

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

TOP

返回列表