在 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