Board logo

标题: [文本处理] 批处理怎样修改配置文件? [打印本页]

作者: heyoug    时间: 2008-7-24 15:12     标题: 批处理怎样修改配置文件?

请教一个关于批处理修改配置文件的编写方法~!
问题一:
如果用批处理器把系统时间(格式为20080724)写入到配置文件1.ini中的第二十行第10个汉字以后。
问题二:
如果用批处理器把配置文件1.ini第七行第七个字母后的内容删除。
谢谢~!
作者: 随风    时间: 2008-7-24 15:36

第二十行第10个汉字以后
首先:是第10 个汉字?还是第10个字符,这个一定要说清楚。
其次:空行算一行吗?
作者: batman    时间: 2008-7-24 16:07

首先指出直接写入是不可能的,但可以进行改写:
问题一:
  1. @echo off&setlocal enabledelayedexpansion
  2. set t=%date:~,-4%&set t=!t:-=!
  3. for /f "delims=" %%i in ('type 1.ini') do (
  4.      set /a n+=1
  5.      if !n! equ 1 (
  6.         echo %%i>1.ini
  7.          ) else (
  8.          if !n! equ 20 (
  9.              set "str=%%i"&set m=0&call :lp
  10.              echo %str%>>1.ini
  11.              ) else (
  12.             echo %%i>>1.ini
  13. )))
  14. echo 搞定&pause>nul&goto :eof
  15. :lp
  16. set "a=%str:~,1%"&set "var=%var%!a!"
  17. if "%a%" gtr "z" set / a m+=1
  18. if %m% equ 10 set "str=%var%%t%%str%"&goto :eof
  19. set "str=%str:~1%"&goto lp
复制代码
问题二:
只要把以上代码稍做修改可以了
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type 1.ini') do (
  3.      set /a n+=1
  4.      if !n! equ 1 (
  5.         echo %%i>1.ini
  6.          ) else (
  7.          if !n! equ 7 (
  8.              set "str=%%i"&set m=0&call :lp
  9.              echo %var%>>1.ini
  10.              ) else (
  11.             echo %%i>>1.ini
  12. )))
  13. echo 搞定&pause>nul&goto :eof
  14. :lp
  15. set "a=%str:~,1%"&set "var=%var%!a!"
  16. if "%a%" leq "z" set / a m+=1
  17. if %m% equ 7 goto :eof
  18. set "str=%str:~1%"&goto lp
复制代码

[ 本帖最后由 batman 于 2008-7-24 16:15 编辑 ]
作者: batman    时间: 2008-7-24 16:12

原帖由 随风 于 2008-7-24 15:36 发表
其次:空行算一行吗?

确实是要考虑空行的问题。
作者: pusofalse    时间: 2008-7-24 20:37

ini文件里绝对少不了以;打头的行,最好指定eol=




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