如何修改帶有特殊字元的環境變數?

如何修改帶有特殊字元的環境變數?

我的提示設定為$P$_CMD>(末尾有一個空格)。這很好用。然而,虛擬環境啟動.bat有以下行:

set PROMPT=(approot) %PROMPT%

當我運行該命令時,cmd 抱怨說

The syntax of the command is incorrect.

在我更改提示之前,這種情況沒有發生。我嘗試在 周圍添加引號(雙引號"和單引號'%PROMPT%,但這不起作用。當舊值包含特殊字元時,如何使用舊值修改提示?

答案1

對於提示變量,切勿使用特殊字元。始終使用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。如果我真的需要,我通常只是改變轉義字元的數量直到它起作用,這比嘗試找出解析規則更容易。

相關內容