用于替换包含文本的行的脚本

时间:2015-09-03 21:27:09

标签: powershell batch-file replace str-replace

我发现了另外一个关于此问题的讨论,其中有许多不同的选择,但其中大多数似乎并不适用于我自己或原始海报。然而,我确实找到了一个确认有效的例子,但是我正努力让它发挥作用并希望得到帮助。

我需要找到以" ServerName ="开头的行。并用我自己的行替换它。我使用了找到并修改它的示例,但是在使用它时遇到错误。

PowerShell命令:

<li class="but50"><a style="padding-bottom: 18px;"  href="javascript:tweetCurrentPage()" target="_blank" alt="Tweet this page" data-via="medneg"><div style="width:50px; text-align:center; float:left"><i class='fa fa-twitter icon' style="font-size: 28px;"></i></div>  Share Page</a></li>
<li class="but50"><a style="padding-bottom: 18px;" href="javascript:twitFollow()"><div style="width:50px; text-align:center; float:left"><i class='fa fa-twitter icon' style="font-size: 28px;"></i></div>  Follow @MJP</a></li>

错误讯息:

  

)此时出人意料

1 个答案:

答案 0 :(得分:0)

如果要从CMD运行复杂的PowerShell语句,则需要将它们放在引号中,以便CMD只看到一个字符串,而不是尝试处理特殊字符(如管道):

powershell -Command "(Get-Content 'C:\Host400.txt') | Foreach-Object {$_ -replace '^workstationID.*$', (""WorkstationID=$computerName""} | Set-Content  'C:\Host400.txt'"

请注意,您需要在命令字符串中转义或替换双引号。

更好的方法是将PowerShell语句放入.ps1脚本并通过-File参数运行:

powershell -File "C:\path\to\your.ps1"