【问题标题】:Replacing <title>Welcome</title> will not work替换 <title>Welcome</title> 将不起作用
【发布时间】:2014-07-07 17:17:43
【问题描述】:

我有一个 aspx 文件,我正在尝试使用 powershell 1.0 进行更新。该文件如下所示:

<html>
 <head>
  <title>Welcome!</title>

我用:

(Get-Content "C:\documents and settings\login.aspx") | ForEach-Object{$_ -replace "<title>Welcome!</title>","<title>Welcome! Warning...</title>"} | Set-Content "C:\documents and settings\login.aspx"

它什么也没做。

但是,我使用:

(Get-Content "C:\documents and settings\login.aspx") | ForEach-Object{$_ -replace "<title>Welcome!","<title>Welcome! Warning..."} | Set-Content "C:\documents and settings\login.aspx"

它取代了它,但显然是错误的方式:

<html>
 <head>
  <title>Welcome! Warning...</title></title>

这里发生了什么?我希望我的第一个示例能够工作

【问题讨论】:

  • 使用您编写的代码,我无法复制问题。第一个例子对我来说很好。

标签: html powershell replace


【解决方案1】:

我发现了我的错误。我的原始脚本中有一个错字(此处未显示)。为了保护我实际工作的隐私目的,我用类似的代码为这个问题写了出来。从这个项目上休息一天后,我回到它并看到了错字。我更正了它,它现在可以工作了。

谢谢!

【讨论】:

    【解决方案2】:
    Get-Content "C:\documents and settings\login.aspx" |
    

    正在读取文件的每一行并立即将其传递到管道中...文件正在使用中,但您试图在最后一个 cmdlet 中更改文件 => 不好

    (Get-Content "C:\documents and settings\login.aspx") |
    

    您正在读取文件,完成之后,然后将每一行传递到管道中,这很好,您可以更新文件,因为它没有被使用

    【讨论】:

    • 我不明白你的陈述file is in use, yet....=&gt;no good。因此,这就是为什么我可能不明白如何解决它?
    • 不,我以为在第一种情况下我没有看到 get-content 周围的 () ,并试图解释为什么没有括号它就无法工作。不过,我认为您的第一句话没有任何问题。
    • 好的。很高兴知道。我将更多地查看代码,看看发生了什么。我没有包含所有代码,因为有很多。我认为这与我提供的部分有关。
    猜你喜欢
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 2017-08-08
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2015-09-18
    相关资源
    最近更新 更多