我有一个使用和接受用户输入的脚本。如果输入字符串包含和,SETLOCAL ENABLEDELAYEDEXPANSION
则会出现问题,因为这些字符及其之间的所有内容都会被删除。!
:
示例:我将a!b:c
用户输入输入到x
并将其直接保存到脚本中作为y
和z
。
SETLOCAL ENABLEDELAYEDEXPANSION
SET x=
SET /P x=
SET y=a!b:c
SET "z=a!b:c"
echo %x% %y% %z%
结果是ac ac ac
。对于直接输入的字符串(如y
和z
),我该如何修复这个问题?对于用户输入的字符串(如),我该如何修复这个问题x
?
您的问题不是输入,也不是延迟扩展模式。
但是启用延迟扩展后,您应该避免百分比扩展。
变量的延迟扩展始终是安全的,与变量内容无关。
set /p var=...
也不是问题。以下示例说明
Set /P
启用延迟变量扩展或使用感叹号!
和冒号之间的字符串没有问题:
。请使用您的测试字符串尝试一下
a!b:c
:如您所见,唯一的问题显然是您决定使用该
echo
命令而不使用延迟变量语法。这就是jeb在他们的回答中所说的“启用延迟扩展后,您应该避免百分比扩展”。