Batch file 如何逃过一劫!在.bat文件的集合行中

Batch file 如何逃过一劫!在.bat文件的集合行中,batch-file,set,escaping,Batch File,Set,Escaping,我有一个带有的密码在其中。无论我尝试了什么,它都会从上掉下来。我的脚本使用的是ENABLEDELAYEDEXPANSION,因此我不确定这是否是我遇到问题的原因。这是我的密码: set password=cccvvv! echo %password% 当我运行脚本时,我得到了cccvvv 我尝试了以下方法: set password=cccvvv!! set password=cccvvv^^! 似乎什么都不管用 我怎样才能让它保持住在变量中?测试它 @echo关闭 setlocal ena

我有一个带有
的密码在其中。无论我尝试了什么,它都会从
上掉下来。我的脚本使用的是
ENABLEDELAYEDEXPANSION
,因此我不确定这是否是我遇到问题的原因。这是我的密码:

set password=cccvvv!
echo %password%
当我运行脚本时,我得到了
cccvvv

我尝试了以下方法:

set password=cccvvv!!
set password=cccvvv^^!
似乎什么都不管用

我怎样才能让它保持住
在变量中?

测试它

@echo关闭
setlocal enableextensions enabledelayedexpansion
惊呼
设置“密码=这是一个测试^!”
请参见环境块
设置密码
正常扩张的rem回波
回显%password%
延迟扩展的rem回波
回声!密码!

当延迟扩展处于活动状态时,您需要转义感叹号以将其存储在变量中,当您在延迟扩展处于活动状态时使用不带延迟扩展语法的变量时,解析器通常会删除感叹号。

我向您建议此解决方案,使用PowerShell包装;)


如果在前面添加^symbol!设置密码时进行标记。在写这个答案之前,我已经检查过了。我还创建了一个test.bat文件来测试它
代码:

精确输出:

cccvvv!
Press any key to continue . . .

你试过把你的密码加引号吗<代码>设置密码=“cccvvv!”回显%password%
@echo off
set password=cccvvv!
echo %password%
pause
cccvvv!
Press any key to continue . . .