我正在尝试使用如下密码调用批处理脚本:
ABC^=abc
不幸的是,我所有的尝试都以以下结果结束:
ABC=abc
“^”字符被省略,我不知道如何强制在脚本中使用此字符读取参数。
我有代码行(其中 PASS 是带有密码的文件本地化):
:get_pass
set PASS=%~1
set USR=%~2
set passwd=
for /f "tokens=1,2 delims= " %%a in (%PASS%) do (
if %%a==%USR% (
set "passwd=%%b"
)
)
我在命令行中调用这个函数:
call script.cmd get_pass C:\Doc\pass.ini USR do set passwd=%%i
echo %passwd%
-> ABC=abc
结果始终没有 ^ 字符。我尝试过在参数周围使用双引号的不同组合,例如:“passwd = %% b”,passwd =“%% b”,但它不起作用。
我将非常感谢您的帮助!
谢谢, 卡米尔
正确的值已存储在变量中,但您的
echo %passwd%
是问题所在。
您可以通过
查看该值set passwd
并使用延迟扩展的值来代替
setlocal EnableDelayedExpansion
echo !passwd!