powershell - 文件中的字符串替换仅保留最后一次更改
问题描述
$injectpoint = %{ [Regex]::Matches($file, "DMG>D8>$dob.+?REF>EA>$mrn") } | %{ $_.Value }
foreach ($data in $injectpoint)
{
$file = Get-Content C:\utils\foo\0000000.txt
inject $file $eth $race $lang $data $dob
}
}
}
function inject($file, $eth, $race, $lang, $injectpoint, $dob)
{
Set-Location C:\utils\boo\
$injector = "$race" + ":" + $eth + ":" + $lang
$newString = $data -replace "DMG>D8>$dob", "DMG>D8>$dob>$injector"
$file.Replace($data, $newString) | Set-Content C:\utils\foo\testfile.txt
}
我的想法是,因为我的循环在循环开始时将文件重新读取到内存中,所以它将新的更改读入内存,然后它将能够在不删除我的循环中所做的更改的情况下设置新内容以前的迭代。
我试图改变文件读入内存的位置(循环外,注入函数内),但当前迭代是我能看到脚本最后一次注入的最远距离,所有其他的都被覆盖。
解决方案
这里的问题是在循环迭代期间,您正在读取文件0000000.txt
并将更改保存到testfile.txt
. 由于您在字符串替换后从未阅读testfile.txt
过,因此您看不到更新后的字符串。
推荐阅读
- java - 无法从除 SSH 之外的任何地方连接到 PostgreSQL
- c# - 具有洋葱架构的 MVC Asp.Net 未发布库项目 Dll。
- powershell - Get-WmiObject 返回拒绝访问错误
- java - 将节点转换为 Int []
- java - 基于城市的收集器分组依据
- python - 在未排序列表的字符串列表中查找字符串的索引
- c# - UWP:自定义控件模板失败,并出现“无法从文本创建 'Windows.UI.Xaml.DependencyProperty'”错误
- python - Python tkinter - 为什么当我更改选项卡时输入框会保留?
- c# - 使用 libgit2sharp 做“git log”
- java - 从java执行批处理文件时行为不一致