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

Can't set return value in batch file

我正在尝试获取一个批处理文件,其中包含一个获取 parameter/s 和 return 值的简单函数。其实我做不到!

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%

控制台是这样的return:

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

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

变化:

echo New value: %var1%

收件人:

Echo New value: !%var1%!

您的 main.bat 正在将 %var1% 作为 %1 传递给 test 过程。 var1 的值为 foo,因此 test 中的 %1foo,因此 foo 将被修改为 bar,不是 var1。尝试 echoing %foo%,而不是 var1