【发布时间】:2014-03-10 01:35:09
【问题描述】:
第一次发帖。
我正在尝试将字符串更新(或添加)到纯文本文件,使用来自另一个文本文件的字符串。
例子:
File1.txt(参考文件)
<add key="1" value="False" />
<add key="2" value="C:\Temp" />
<add key="3" value="True" />
<add key="4" value="True" />
<add key="5" value="False" />
<add key="6" value="False" />
<add key="7" value="False" />
<add key="8" value="False" />
<add key="9" value="False" />
<add key="10" value="newkey" />
<add key="11" value="False" />
<add key="12" value="127.0.0.1" />
<add key="13" value="True" />
<add key="14" value="True" />
<add key="15" value="False" />
<add key="16" value="False" />
<add key="17" value="False" />
<add key="18" value="True" />
<add key="19" value="True" />
<add key="20" value="True" />
<add key="21" value="True" />
<add key="22" value="True" />
File2.txt(目标文件)
<150 strings>
</150 strings>
<appSettings>
<add key="1" value="False" />
<add key="2" value="False" />
<add key="3" value="False" />
<add key="4" value="False" />
<add key="5" value="False" />
<add key="6" value="False" />
<add key="7" value="False" />
<add key="8" value="False" />
<add key="9" value="False" />
<add key="10" value="False" />
<add key="11" value="False" />
<add key="12" value="False" />
<add key="13" value="False" />
<add key="14" value="False" />
<add key="15" value="False" />
<add key="16" value="False" />
<add key="17" value="False" />
<add key="18" value="False" />
<add key="19" value="False" />
<add key="20" value="False" />
<add key="21" value="False" />
<add key="22" value="False" />
</appSettings>
<startup>
<supportedRuntime/>
</startup>
</configuration>
要求:
如果 file2.txt 已经包含一个或所有键(即 1 到 22),我想用 file1.txt 的键替换这些键。
如果 file2.txt 缺少 file1.txt 中存在的任何键,则需要添加它们。只要它们出现在
<AppSettings>内,顺序无关紧要。如果 file2.txt 包含 file1.txt 中不存在的键,则应保留它们。
<AppSettings>之外的任何内容都应保持不变。
在简要测试了 Dbenham 的最后一个脚本后,它看起来完成了所有工作,但是上面和下面的行被移动了(我的错是没有提供完整的示例)。
这是 Dbenham 脚本的当前输出:
<150 strings>
</150 strings>
<appSettings>
</appSettings>
<startup>
<supportedRuntime/>
</startup>
</configuration>
<add key="1" value="False" />
<add key="2" value="C:\Temp" />
<add key="3" value="True" />
<add key="4" value="True" />
<add key="5" value="False" />
<add key="6" value="False" />
<add key="7" value="False" />
<add key="8" value="False" />
<add key="9" value="False" />
<add key="10" value="newkey" />
<add key="11" value="False" />
<add key="12" value="127.0.0.1" />
<add key="13" value="True" />
<add key="14" value="True" />
<add key="15" value="False" />
<add key="16" value="False" />
<add key="17" value="False" />
<add key="18" value="True" />
<add key="19" value="True" />
<add key="20" value="True" />
<add key="21" value="True" />
<add key="22" value="True" />
【问题讨论】:
-
在此处发帖之前您已经尝试过什么?你能提供例子吗?
-
我使用 findstr 从其他文件中提取字符串以创建 'file1.txt',但需要一些指导来完成上述操作。作为脚本的新手,我无法理解一些稍微相似的 SO 场景/问题上的脚本。谢谢
-
如果我正确理解了您的解释,最后 File2.txt 将包含 File1.txt 的相同内容,所以一个简单的
copy File1.txt File2.txt /y就可以解决这个问题!这两个文件的其他行是否与“<add key=... />”不同?如果是这样,非常重要列出两个文件的真实小片段... -
不说,我假设您想保留 file2 中不存在于 file1 中的现有键值。这与@Aacini 提出的观点相同。
-
dbenham,你是对的。 file2 中的某些值在 file1 中不存在,否则副本将起作用......现在正在努力上传一些“真实”样本。
标签: string batch-file replace reference