我用PowerShell替换了.bat脚本的一部分。批处理文件的配置通过set适当的环境变量的文件来完成。我正在寻找一种将这些变量值加载到.ps1脚本中的方法,而无需修改.bat文件(因为它们在其他地方也使用过)。
.bat示例如下所示:

set VAR_ONE=some_value
set VAR_TWO=/other-value

在批处理脚本中,我只需CALL配置文件,变量就可以使用。我已经尝试从PowerShell进行点源(. filename.bat)和调用(& filename.bat)配置文件,但都没有使变量可见。尝试同时使用$VAR_ONE$env:VAR_ONE语法访问它们。

在不修改磁盘上格式的情况下加载此类配置文件的好方法是什么?

最佳答案

我会解析它们(只是跳过所有不以set开头的行,并以第一个=字符进行拆分。您可以从小型C#cmdlet或直接通过小型PowerShell脚本来实现:

CMD /c "batchFile.bat && set" | .{process{
    if ($_ -match '^([^=]+)=(.*)') {
        Set-Variable $matches[1] $matches[2]
    }
}}

我有这段代码,并且我确定它来自某个地方,但是功劳已经丢失了,我想它来自Invoke-Batch脚本的Power Shell Community Extensions

关于windows - 如何从.bat文件将变量源到PowerShell脚本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20077820/

10-11 23:07
查看更多