Function Can';t在批处理文件中设置返回值
我试图获取一个批处理文件,其中包含一个简单的函数,用于获取参数和返回值。事实上我做不到 测试。蝙蝠:Function Can';t在批处理文件中设置返回值,function,batch-file,return,args,Function,Batch File,Return,Args,我试图获取一个批处理文件,其中包含一个简单的函数,用于获取参数和返回值。事实上我做不到 测试。蝙蝠: @echo off setlocal EnableDelayedExpansion set arg=bar echo my args %* echo my new value %arg% endlocal&set %~1=%arg% @echo off setlocal EnableDelayedExpansion set var1=foo echo Old value: %va
@echo off
setlocal EnableDelayedExpansion
set arg=bar
echo my args %*
echo my new value %arg%
endlocal&set %~1=%arg%
@echo off
setlocal EnableDelayedExpansion
set var1=foo
echo Old value: %var1%
call test.bat %var1%
echo New value: %var1%
main.bat:
@echo off
setlocal EnableDelayedExpansion
set arg=bar
echo my args %*
echo my new value %arg%
endlocal&set %~1=%arg%
@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
在
main.bat
中,您需要回显%foo%
的值内容,而不是%var1%
的值内容:
更改:
回显新值:%var1%
致:
回显新值:!%1%!
您的main.bat
正在将%var1%
作为%1
传递到测试过程var1
具有所示的值foo
,因此测试中的%1
是foo
,因此foo
将被修改为bar
,而不是var1
。尝试echo
ing%foo%,而不是var1
您也可以使用调用echo新值:%%%var1%%
解决我的问题谢谢!我不明白!或者%的意思是,我试图与c/c++的*和-,进行比较,但我认为我错了!