批量 - 获取包含特殊字符的参数

Batch - get parameter that include special characters

我知道有很多类似的问题,但仍然无法解决。

我有一个接受多个参数的简单批处理,其中一个是可能包含特殊字符的密码。
批处理应该 运行 一些带有发送到批处理的参数的 .exe。 Test.bat 参数 1 参数 2 !@#$%^&*()_+

带特殊字符的参数应该如何处理?
我尝试使用此代码并使用 ^^ ^& 等转义特殊字符

  SET PASSWORD=%3

  SET "PASSWORD=%3"

  setlocal enabledelayedexpansion
  SET "PASSWORD=%3"
  echo !PASSWORD!

要点:

  • 双引号参数Arg1 Arg2 "!@#$%~^&*()_+"
  • 在启用延迟扩展之前定义变量以保留 ! 个字符以及 ! 个字符之后/之间的任何字符。
  • 将变量名开头到变量内容结尾的字符串双引号,并在扩展参数变量赋值时使用~修饰符去掉周围的双引号
@Echo off

 Set "Arg3=%~3"
 IF Defined Arg3 (
  Setlocal EnableDelayedExpansion
  Echo(!Arg3!
 )

 Endlocal