在powershell上查找并替换

时间:2012-07-16 11:09:22

标签: powershell powershell-ise

我的文本文件如下所示:

-------------------
Set PRGVER="V1.0.12"
Set PRGDIR=C:\PRGSTD\oif_mes\OIFplus
Set PRGEXE=OIFplus.bat
Set PRGTXT=OIFplus

echo %PRGTXT%, %PRGVER%
start "%PRGTXT%" /D%PRGDIR%\%PRGVER%\ %PRGDIR%\%PRGVER%\%PRGEXE%
----------------------

我不想做的事,编辑此文件,只将Set PRGVER="V1.0.12"更改为新的号码,例如Set PRGVER=V1.0.13"
何时启动PS脚本,我不知道整个字符串,""之间的数字 我只知道,找到字符串变量:Set PRGVER=""

如何只替换""之间的第一个值?

4 个答案:

答案 0 :(得分:2)

像这样;

$srt = <your text>
$r = $str -replace "PRGVER=`".*`"", "PRGVER=`"your_replace`""

答案 1 :(得分:0)

以下应该这样做。它找到以'Set PRGVER =“V'开头的行,后跟任意数量的数字,然后是一个点,任意数量的数字,一个点,任意数量的数字,并以'”'结尾。找到后,该行将替换为'Set PRGVER =“V1.0.13”',结果将保存回文件。

(Get-Content file.txt) -replace '^Set PRGVER="V\d+\.\d+.\d+"$','Set PRGVER="V1.0.13"' | Out-File file.txt

答案 2 :(得分:0)

以下PoSH将取代PRGVER值:

$newValue = "v123.456.789"
gc D:\temp\text | % { $_ -ireplace '(Set PRGVER=)\"([^"]*)\"', ('$1"' + $newValue + '"') };

答案 3 :(得分:0)