无法在批处理文件中设置 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
中的 %1
为 foo
,因此 foo
将被修改为 bar
,不是 var1
。尝试 echo
ing %foo%,而不是 var1
我正在尝试获取一个批处理文件,其中包含一个获取 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
中的 %1
为 foo
,因此 foo
将被修改为 bar
,不是 var1
。尝试 echo
ing %foo%,而不是 var1