Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function Can';t在批处理文件中设置返回值_Function_Batch File_Return_Args - Fatal编程技术网

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++的*和-,进行比较,但我认为我错了!