0

这是场景:

我有一个调用大约十几个子脚本的父脚本,其中一个是有点复杂的文件夹/文件同步操作。每个子脚本都将一个变量写入批处理文件(例如 variable.bat),然后在下次执行时由父脚本加载该文件。

文件夹同步脚本根据通过父脚本传递给它的参数从大量文件夹列表中进行选择。

子脚本的 SET 命令如下所示:

ECHO SET pair-folder-%1=yes>>c:\variable.bat

这会在下次运行时生成一个由父脚本加载的变量。这就是问题所在:我如何编写一个动作(通过 IF 陷阱),在下一次子脚本出现时调用该变量?我想我的 IF 陷阱看起来像这样:

IF %pair-folder-%1%=yes GOTO nopair

问题是我似乎无法让批处理正确解释 - 我尝试使用延迟扩展等几种不同方式嵌套变量。是否有必要先将参数映射到局部变量?

基本上,一旦父脚本在下次执行时调用 variable.bat,我如何从子脚本中引用新设置的变量?

4

1 回答 1

0

由于您set pair-folder-%1=yes要向 then 附加行,variable.bat因此您将varable.bat建立越来越多的pair-folder-*变量集。

现在如果要检查是否pair-folder-%已设置,则

if defined pair-folder-%1 ...

会为你做的。

如果你想找到 pair-folder-%1 的值(即它不只是设置或未设置)那么

set "valuefound="
for /f "tokens=1*delims==" %%i in ( 'set pair-folder-%1 2^>nul' ) do (
 if /i "%%i"=="pair-folder-%1" set "valuefound=%%j"
)

应该这样做 -valuefound如果变量未定义,则将“设置”为无值(即未定义),否则为它的值。

于 2013-09-24T18:17:03.103 回答