繁体   English   中英

批处理脚本-参数嵌套在变量内部?

[英]Batch Script - Parameter Nested Inside Variable?

这是场景:

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

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

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

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

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

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

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

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

由于要将set pair-folder-%1=yes行追加到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将被“设置”为没有值(即,未定义),否则其值为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM