在 BATCH 中传递带有特殊字符的参数
Pass arguments with special characters in BATCH
我有一个批处理文件(例如:test.bat),它占用了一些参数,一个是登录名,第二个是密码。密码包含特殊字符(密码!?>)所以为了防止执行特殊字符,我用双引号(“密码!?>”)传递它,但我需要将它传递给下一批哑mysql数据库所以密码必须没有“”,如何在不执行此特殊字符的情况下像不带双引号的普通字符串一样传递我的密码?
以下是安全捕获脚本参数并使用它们的方法。
@Echo off
Rem # input capture method is a modified version of Dave Benhams method:
Rem # https://www.dostips.com/forum/viewtopic.php?t=4288#p23980
SETLOCAL EnableDelayedExpansion
1>"%~f0:Params.dat" <"%~f0:Params.dat" (
SETLOCAL DisableExtensions
Set prompt=#
Echo on
For %%a in (%%a) do rem . %*.
Echo off
ENDLOCAL
Set /p "Args="
Set /p "Args="
Set "Args=!Args:~7,-2!"
) || (
1>&2 Echo(%~nx0 requires an NTFS drive system to function as intended.
CMD /C Exit -1073741510
) || Goto:Eof
Echo(some command !Args:"=!
Pause
我有一个批处理文件(例如:test.bat),它占用了一些参数,一个是登录名,第二个是密码。密码包含特殊字符(密码!?>)所以为了防止执行特殊字符,我用双引号(“密码!?>”)传递它,但我需要将它传递给下一批哑mysql数据库所以密码必须没有“”,如何在不执行此特殊字符的情况下像不带双引号的普通字符串一样传递我的密码?
以下是安全捕获脚本参数并使用它们的方法。
@Echo off
Rem # input capture method is a modified version of Dave Benhams method:
Rem # https://www.dostips.com/forum/viewtopic.php?t=4288#p23980
SETLOCAL EnableDelayedExpansion
1>"%~f0:Params.dat" <"%~f0:Params.dat" (
SETLOCAL DisableExtensions
Set prompt=#
Echo on
For %%a in (%%a) do rem . %*.
Echo off
ENDLOCAL
Set /p "Args="
Set /p "Args="
Set "Args=!Args:~7,-2!"
) || (
1>&2 Echo(%~nx0 requires an NTFS drive system to function as intended.
CMD /C Exit -1073741510
) || Goto:Eof
Echo(some command !Args:"=!
Pause