传递参数时批量使用“=”作为字符串

Batch use "=" as a string when passing argument

funtion.bat 回显变量

set "Var1=%1"
set "Var2=%2"
set "Var3=%3"

echo %Var1% %Var2% %Var3%

我使用了一个通过传递 3 个参数来调用此函数的批处理

call function.bat blabla= argument2 TEST.txt

如您所见,我的第一个论点中有一个等号。但我想将它用作字符串而不是运算符。

当我 运行 批处理时,这是我得到的结果:

blabla
argument2
TEST.txt

这是我想要的结果:

blabla=
argument2
TEST.txt

有人知道如何获得 "blabla=" 吗?

来自 cmd /? 在命令中:

The special characters that require quotes are:
<space>
&()[]{}^=;!'+,~ `

如您所见,您应该引用 几乎所有包含 = 的内容,因为它用作分隔符。您应该 运行 您的批处理文件使用以下命令:

call function.bat "blabla=" "argument2" "TEST.txt"

在 cmd 中,然后使用以下代码(~ 修饰符)删除每个参数的双引号:

set "Var1=%~1"
set "Var2=%~2"
set "Var3=%~3"

echo %Var1% %Var2% %Var3%

它应该可以工作。建议采用这种方式作为最佳实践。永远这样做。