- 帖子
- 7
- 积分
- 30
- 技术
- 0
- 捐助
- 0
- 注册时间
- 2010-12-14
|
[文本处理] 批处理怎样读取ini来修改其它文件的对应条目?
我在百度知道上看到一个帖子:
简单批处理,文本替换
要求是:从配置文件 profile.ini里面读取参数,从而来修改文件a.10。txt里面的对应条目。
profile.ini 内如如下:
MARKER NAME = D079
MARKER NUMBER = D079
REC = SN : 618-00124
OBSERVER = ZLY
AGENCY = D301
ANT # = 383-1072
a.10.txt的部分内容如下:
…………
…………
KPHSU77FSAO TPS NET-G3A 3.4 Jun,23,2009 NET-REC # / TYPE / VERS
……
……
需要做的是:从profile.ini里找到REC = SN : 618-00124 ,将a.10.txt里的 KPHSU77FSAO 替换为 SN : 618-00124,即a.10.txt内容为:
…………
…………
SN : 618-00124 TPS NET-G3A 3.4 Jun,23,2009 NET-REC # / TYPE / VERS
那位达人的回答是:
先用for 读取ini文件,配合findstr 找到需要的内容
再读取a.10,把指定的内容替换为找到的,就可以了
@echo off
for /f "tokens=1,* delims==" %%i in ('findstr REC profile.ini')do set wind=%%j
(for /f "delims=" %%i in (a.10.txt)do (set snow=%%i
call echo %%snow:KPHSU77FSAO=%wind%%%))>wind.txt
若改为:
(set snow=%%i
echo %%snow:KPHSU77FSAO=%wind%%%))>wind.txt
则显示:
%snow:KPHSU77FSAO= SN : 618-00124%
%snow:KPHSU77FSAO= SN : 618-00124%
%snow:KPHSU77FSAO= SN : 618-00124%
%snow:KPHSU77FSAO= SN : 618-00124%
%snow:KPHSU77FSAO= SN : 618-00124%
若改为:
(set snow=%%i
call echo %snow:KPHSU77FSAO=%wind%%))>wind.txt
则显示:
KPHSU77FSAO= SN : 618-00124
KPHSU77FSAO= SN : 618-00124
KPHSU77FSAO= SN : 618-00124
KPHSU77FSAO= SN : 618-00124
KPHSU77FSAO= SN : 618-00124
若改为:
(set n=%%i
echo %n:KPHSU77FSAO=%wind%%))>wind.txt
则显示:
KPHSU77FSAO= SN : 618-00124
KPHSU77FSAO= SN : 618-00124
KPHSU77FSAO= SN : 618-00124
KPHSU77FSAO= SN : 618-00124
KPHSU77FSAO= SN : 618-00124
我的问题是:
为什么不用call命令就会发生上述情况?
echo后为啥用%%?两个%在一起并位于echo后时有啥作用?
谢谢。 |
|