如何在批处理脚本中编写一个函数来解析文本文件以加载变量值并将结果返回给调用者

问题描述 投票:0回答:1

针对这个问题:

如何识别使用批处理脚本从文本文件解析的唯一变量名称列表

我设法编写了批处理脚本,该脚本将通过解析文本文件来加载变量值和数组变量值。

现在,我想在一个函数或另一个批处理脚本中执行此操作,该脚本将由主脚本调用。例如:

:: this is the main Windows Batch Script
call LoadConfigValues.bat
:: display the loaded vales
set

我注意到,由于被调用的脚本

LoadConfigValues.bat
有语句
SETLOCAL ENABLEDELAYEDEXPANSION
,那么该脚本生成的所有变量都将被删除。

我如何强制脚本创建的新变量

LoadConfigValues.bat
将可用于主脚本?

windows variables batch-file scope
1个回答
0
投票

解决方案1:(黑暗者的建议)

setlocal enabledelayedexpansion
call subroutine
rem your variables available here

在子程序中:

if "" neq "!!" setlocal enabledelayedexpansion

这样,子例程中的

setlocal
仅在尚未生效时才被调用(但是 - 更改/创建的变量将由子例程脚本末尾的隐式
endlocal
取消)。

解决方案2:

call subroutine "filename"
for /f "usebackqdelims=" %%e in ("filename") do set "%%e"
del "filename"

在子程序中:

if "%~1" neq "" for %%e in (%keynameslist%) do set %%e>>"%~1"

将以

keynameslist
中的条目开头的变量名称写入文件
%1
,如果指定了
var=value
,则其值采用格式
%1

[均未经测试]

© www.soinside.com 2019 - 2024. All rights reserved.