批量 - 获取包含特殊字符的参数
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
我知道有很多类似的问题,但仍然无法解决。
我有一个接受多个参数的简单批处理,其中一个是可能包含特殊字符的密码。
批处理应该 运行 一些带有发送到批处理的参数的 .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