我的文本文件包含许多具有唯一名称的参数。我需要通过名称查找参数并更改参数的值。该文件看起来像这样
ID Value Name
4450 2.0 / [var_pot] 'DCF_loc'
4451 100.0 / [var] 'DCF_t'
4452 0.1 / [var] 'DCF_dur'
4458 1000.0 / [var] 'CommtF_t_P1'
例如我需要在文件中找到参数'DCF_t',并将其值从100替换为其他值,例如10.不幸的是,在我的情况下,只有参数的名称和值在我的控制范围内。我需要一个批处理文件来执行“查找和替换”工作。
请帮帮我...提前致谢...
答案 0 :(得分:2)
如果是Windows,则需要
循环遍历文件的所有行。尝试像...... FOR /F %%a in (values.txt) DO echo %%a
跳过第一个标题行。试试FOR /f "skip=1" %%a in (%1) do echo %%a
解析该行的内容。试试FOR /f "skip=1 tokens=1-5" %%a in (%1) do echo %%b %%d
检查第四项。尝试
for /f "skip=1 tokens=1-5" %%a in (%1) do (
if /i .%%e.==.'DCF_t'. (
echo %%a 99.9 %%c %%d %%e
) else (
echo %%a %%b %%c %%d %%e
)
)
你几乎完成了,或者至少以你的方式解决了这个问题。有关详细信息,请参阅HELP FOR
和HELP IF
。
答案 1 :(得分:1)
这对批量初学者来说有点神秘。还有很多更好的语言来完成这项工作 但它也可以批量完成。
关键是重写文件并修改正确的行。
set "otherValue=10"
setlocal EnableDelayedExpansion
(
For /f "tokens=1,2,*" %%a in (myFile.txt) do (
set "var=%%c"
if "!var!"=="!var:DCF_t=!" (
rem ** not found, echo the line
echo(%%a %%b !var!
) ELSE (
rem ** Found the line
echo(%%a %otherValue% !var!
)
)
) > outfile.txt
这假定文本中没有感叹号,并且行的格式总是分为由空格或制表符分隔的三个部分。