我用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/