用于替换包含文本的行的脚本
Script to replace line that contains text
我发现了另一个关于此的讨论,其中有许多不同的选项可用,但其中大多数似乎对我自己或原始发布者都不起作用。不过,我确实找到了一个已确认有效的示例,但我正在努力使其正常工作并希望得到帮助。
我需要找到以 "ServerName=" 开头的行并将其替换为我自己的行。我已经使用了找到并修改它的示例,但是在使用它时出现错误。
PowerShell 命令:
powershell -Command "(Get-Content 'KFGame\Config\PCServer-KFGame.ini') | Foreach-Object {$_ -replace '^ServerName.$', ('ServerName=Network BUF 12345 Normal')} | Set-Content 'KFGame\Config\PCServer-KFGame.ini'"
错误信息:
) was unexpected at this time
如果您想 运行 来自 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"
我发现了另一个关于此的讨论,其中有许多不同的选项可用,但其中大多数似乎对我自己或原始发布者都不起作用。不过,我确实找到了一个已确认有效的示例,但我正在努力使其正常工作并希望得到帮助。
我需要找到以 "ServerName=" 开头的行并将其替换为我自己的行。我已经使用了找到并修改它的示例,但是在使用它时出现错误。
PowerShell 命令:
powershell -Command "(Get-Content 'KFGame\Config\PCServer-KFGame.ini') | Foreach-Object {$_ -replace '^ServerName.$', ('ServerName=Network BUF 12345 Normal')} | Set-Content 'KFGame\Config\PCServer-KFGame.ini'"
错误信息:
) was unexpected at this time
如果您想 运行 来自 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"