答案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
。如果我真的需要,我通常只是改變轉義字元的數量直到它起作用,這比嘗試找出解析規則更容易。