【发布时间】:2020-10-06 09:09:34
【问题描述】:
我正在 Powershell 中查找/替换单词。我很好奇替换顺序。
想让它依次用Test2替换Test1,然后用Test3替换Test2的某些字符串组合(见下文)。
1) 只是好奇它下面的代码是否安全?或者 Powershell 是否同时运行,从而打破了我的必需序列替换模式?
这似乎是工作,只是想 100% 确定。否则,我可以在第一次替换完成后编写另一个 foreach 循环。
2) 另外,我需要下面的管道分隔符吗?不知道他们做了什么,从以前的程序员那里继承了这个脚本,试图谷歌和研究 powershell。
#Replace words in file
$TestFiles = Get-ChildItem $DBContextDestination *.cs -rec
foreach ($file in $TestFiles )
{
(Get-Content $file.PSPath) |
Foreach-Object { $_ -replace "abcd", "1234" } |
Foreach-Object { $_ -replace "Test1;", "Test2" } |
Foreach-Object { $_ -replace "Class Test2 Object", "Class Test3 Object" } |
Set-Content -Encoding UTF8 $file.PSPath
}
【问题讨论】:
-
对于每个单独的输入项,管道中的命令将按顺序执行,即。在通过第二个之前,没有输入字符串会到达第三个
ForEach-Object块,依此类推 -
嗨@MathiasR.Jessen 谢谢,随时写答案,我可以发送积分,我是否也需要 |最后的管道分隔符?这样能保证顺序吗?
-
它们并不是真正的“分隔符”,但是是的,您确实需要
|才能将它们“绑定”在一起。我关闭它的副本的答案解释了管道的工作原理
标签: powershell powershell-4.0 powershell-ise