无法在批处理文件中设置返回值

时间:2017-11-28 16:52:08

标签: function batch-file return args

我试图获取一个批处理文件,其中包含一个获取参数/返回值的简单函数。实际上我无法做到这一点!

test.bat的:

@echo off
setlocal EnableDelayedExpansion

set arg=bar
echo my args %*
echo my new value %arg%

endlocal&set %~1=%arg%

main.bat:

@echo off
setlocal EnableDelayedExpansion

set var1=foo
echo Old value: %var1%
call test.bat %var1%
echo New value: %var1%

这是控制台返回的内容:

Old value: foo
my args: foo
my new value: bar
New value: foo

2 个答案:

答案 0 :(得分:0)

main.bat中,您需要回显%foo%的价值内容,而不是%var1%的价值内容:

变化:

echo New value: %var1%

要:

Echo New value: !%var1%!

答案 1 :(得分:0)

您的main.bat正在将%var1%作为test传递给%1程序。 var1已展示价值foo,因此%1中的testfoo,因此foo将被修改为bar,不是var1。试试echo%foo%,而不是var1