如何将带引号的字符串加上其他值作为单个参数传递给另一个函数

How to pass a quoted string plus other values as a single parameter to another function

如果有一个变量,其值既可以包含空格也可以不包含空格:

set myvar=value1 "my value 2" value3

如何将此参数作为一个整体参数提供给另一个函数,而不会将其分解为其他参数。

CALL: MYFUNC other.param1 myvar other.param2

:MYFUNC
set other.param1=%1
set myvar=%2       
set other.param1=%3

当遇到类似的问题时,我曾经用引号引用参数,但这种方法不再有效,因为参数本身已经包含引号。

传递变量名而不是变量内容作为引用。

@ECHO OFF
SET myvar=value1 "my value 2" value3
CALL :MYFUNC other.param1 myvar other.param2
GOTO :EOF

:MYFUNC
setlocal enabledelayedexpansion
set other.param1=%1
set myfuncvar=!%2!       
set other.param3=%3
echo %other.param1%
echo %myfuncvar%
echo %other.param3%
endlocal
pause