首页 > 解决方案 > 批量赋值给参考变量

问题描述

我一直在批处理函数/子例程中遇到一个奇怪的问题,其中分配给引用变量将按预期工作,但总是会打印出一个错误,指出“命令的语法不正确”。

这是一个示例批处理脚本:

@echo off
setlocal enabledelayedexpansion

set Foo=1
call :JustAFunction Foo
echo %Foo%

:JustAFunction
set %1=Bar
goto :eof

endlocal

及其输出:

C:\Users\Thane\Desktop>test.bat
Bar
The syntax of the command is incorrect.

为什么会发生这种情况,正确的语法是什么?

标签: windowsbatch-filecmd

解决方案


最后你需要“goto :EOF”;否则它将尝试执行 :JustAFunction 代码(批处理不会因为遇到函数而停止)

@echo off
setlocal enabledelayedexpansion

set Foo=1
call :JustAFunction Foo
echo %Foo%


goto :EOF
rem ^^^^^^^^^^^^^^ you need line above.

:JustAFunction
set "%1=Bar"
goto :eof

endlocal

推荐阅读