如何修改带有特殊字符的环境变量?

如何修改带有特殊字符的环境变量?

我的提示设置为$P$_CMD>(末尾有一个空格)。这很好用。但是,虚拟环境激活脚本有以下行:

set PROMPT=(approot) %PROMPT%

当我运行该命令时,cmd 抱怨说

The syntax of the command is incorrect.

在我更改提示之前,这种情况没有发生过。我尝试在 周围添加引号(双引号"和单引号'%PROMPT%,但不起作用。当旧值包含特殊字符时,如何利用旧值修改提示?

答案1

对于 prompt 变量,您永远不应使用特殊字符。始终使用special codes只要有可能,就可以找到prompt /?

回复您的评论:

与其他变量一起使用SetLocal EnableDelayedExpansion!.然后使用s 代替s来引用变量%

延迟扩展将导致变量在执行时而不是在解析时扩展,此选项通过 启用SETLOCAL command。当延迟扩展生效时,变量可以使用!variable_name!(除了正常的%variable_name%)来引用

由于变量在执行时被扩展,并且特殊字符>(在本例中)仅在解析时才是特殊的,因此您完全避开了这个问题。

例如:

SetLocal EnableDelayedExpansion

set test=World^>
set test2=Hello !test!

请注意,^是转义字符,允许您输入特殊字符(变量将存储为World>,因此,除非您确实set test=World^^^>导致存储值为World^>,否则这对您的问题不起作用。

转义可能会变得很复杂。例如,要设置test2为文字!test!,您需要使用^^!test^^!,否则您只会获得的值test。如果我真的需要,我通常只需改变转义字符的数量直到它起作用,这比试图找出解析规则更容易。

相关内容