0

再会,

请问有人可以帮我在powershell中从批处理文件中过滤一些记录后设置一些变量吗?

我的批处理文件(config.bat)如下所示:

---------
set FILENAME=OIMSX4455
set USR=AJ34
set DOCTYPE=WORD
set YEAR=2019
---------

我的 Powershell 代码类似于下面的代码,尽管我不确定如何设置变量,即(将值“WORD”和“AJ34”放入 $doc 和 $user


$vars = "c:\temp\config.bat"
get-content $vars | select-string -pattern ("set DOCTYPE=","set USR=") 
foreach-object {
$doc=<should equal WORD>
$user=<should equal AJ34>
}

由于我的配置文件更改并具有多个值,我只对后面的值感兴趣 = sign for set DOCTYPE= & set USR= ie WORD and AJ34 in this example

在另一天,配置值会改变,这就是为什么我需要再次将它们读入我的 powershell 变量。对于任何错误等,请提前道歉

谢谢

4

1 回答 1

1

我认为最简单的方法是在逐行比较中使用正则表达式switch

$user, $doc = $null
switch -Regex -File 'c:\temp\config.bat' {
    '^set USR\s*=\s*(.*)'     { $user = $matches[1] }
    '^set DOCTYPE\s*=\s*(.*)' { $doc = $matches[1] }
}

Write-Host "user: $user`tdoc: $doc"

结果:

user: AJ34  doc: WORD
于 2021-02-11T12:23:49.903 回答