标题: [文本处理] 批处理怎样修改ini文件? [打印本页]
作者: wufeishi 时间: 2011-3-3 19:34 标题: 批处理怎样修改ini文件?
.......
[login]
outletcode=01
username=0103
programno=01
language=0
.......
想用批处理修改ini文件中programno的值,在01和02两个数切换。即programno=01,programno=02。
programno在第29行。
请问可以用bat实现吗?
作者: weichenxiehou 时间: 2011-3-3 22:09
估计很好实现,假设要修改的ini文件为test.ini,把下面的代码制成bat文件放到相同目录下,运行一次就切换一次。- @echo off
- (for /f "tokens=2 delims=:" %%i in ('findstr /n .* test.ini') do (
- set "str=%%i"
- set/a n+=1
- setlocal enabledelayedexpansion
- if !n! equ 29 (set flag=1&if "!str!"=="programno=01" (echo programno=02)else echo programno=01)else set flag=
- if not defined flag echo !str!
- endlocal
- ))>new.ini
- move /y new.ini test.ini
复制代码
作者: CrLf 时间: 2011-3-3 22:33
不知道这样行不行,未测试:- @echo off&setlocal enabledelayedexpansion >nul 3>2.txt
- for /f "tokens=1* delims==" %%a in (1.ini) do if "%%a"=="programno" (
- set /a n=^!(1%%b-101)+101
- echo %%a=!n:~1!
- ) else echo %%a=%%b
- move 2.txt 1.ini
复制代码
作者: weichenxiehou 时间: 2011-3-4 08:46 标题: 回复 3楼 的帖子
替换01和02的方法很妙,不过好像没有等号的行会在后面多一个等号……而且好像最后一句move命令的正确输出也会重定向到2.txt中,而且此时句柄1关联到2.txt,貌似不能move,括号前应该需要转义字符,不过我运行了一下,没有成功切换,望解答。
[ 本帖最后由 weichenxiehou 于 2011-3-4 08:59 编辑 ]
作者: wc726842270 时间: 2011-3-4 15:06
sed下载http://plp626.ys168.com/- @echo off
- for /f "tokens=1-3 delims==:" %%i in ('findstr /nic:"programno=" a.ini') do echo 当前a.ini中progamno的值%%k,行数为%%i
- set /p b=请指定操作行:(参考上面)
- set /p a=请输入操作值:(1或2)
- (for /f "delims=" %%i in ('sed %b%s/0[12]/0%a%/ a.ini') do echo %%i)>2.ini
- if exist 2.ini (del a.ini&& ren 2.ini a.ini)
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |