我正在导入KIX文件:
.modal-body { min-height: 350px; overflow-y: visible !important; }
该文件包含以下内容:
$KIXOLD = get-content E:\File.kix
我需要获取脚本版本,在本例中为$ScriptVer = "12.0" ; Current Script Version Number
,但该数字可能因我导入的文件而异。
我已尝试12.0
和正则表达式:
Select-String
但是仍然抓住整个行,包括$OLDVER = $KIXOLD | Select-String -Pattern "\$ScriptVer = `"\d\d\.\d`""
而不只是; Current Script Version Number
我认为这必须简单,我只是把它弄错了,但我尝试过的任何东西对我都没用。
最终目标是将$scriptver = "12.0"
作为一个int,增加并替换它,但是我无法做到这一点,直到我可以将12.0
与其余的多个隔离开来-thousand line KIX file
答案 0 :(得分:1)
试试这个
get-content "E:\File.kix" | where {$_ -like '$ScriptVer*'} | %{$_.split( '=;"')[2]}
答案 1 :(得分:1)
其他方法:
$template=@"
{Row*:ScriptVer = "{Version:12.0}" ; Xxx}
"@
(get-content "E:\File.kix" | ConvertFrom-String -TemplateContent $template).Row.Version
答案 2 :(得分:0)
这有帮助吗? $ OLDVER = [regex] ::匹配($ KIXOLD," ScriptVer =([1-9] \ d。\ d)")。groups [1] .value
答案 3 :(得分:0)
Select-String输出正则表达式MatchInfo
个对象。要获得该值,您需要使用一组所需的文本进行匹配,然后展开匹配,然后展开该组,然后展开该值,例如
$Ver = Select-String -Path E:\File.kix -Pattern '^\$ScriptVer = "(.*?)"' |
Select-Object -ExpandProperty Matches |
ForEach-Object { $_.Groups[1].Value }