[英]How to escape special characters on batch file when setting variable
我需要在批處理腳本中設置一個帶有字符串!5 [4U}〜YfWWre“ 4a的變量。我知道我必須在其中轉義一些特殊字符,但我不太正確。
我的延遲變量擴展為ON,並且基於https://www.robvanderwoude.com/escapechars.php ,我嘗試了以下操作:
他們都沒有為我工作。 我究竟做錯了什么?
@ECHO OFF
SETLOCAL
SET "var=!5[4U}~YfWWre"4a"
ECHO var=%var%
SET var
GOTO :EOF
對我來說效果很好...但是您使用的是delayedexpansion
因此
@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "var=^!5[4U}~YfWWre"4a"
ECHO var=%var%
SET var
GOTO :EOF
這表明它完全取決於您如何顯示字符串。
@ECHO OFF
SETLOCAL enabledelayedexpansion
SETLOCAL disabledelayedexpansion
SET "var=!5[4U}~YfWWre"4a"
ECHO var=%var%
SET var
endlocal&SET "var=%var:!=^!%"
ECHO var=%var%
SET var
GOTO :EOF
演示相同的現象-如果字符串包含多個!
像!5[4U}~!YfWWre"4a
一樣,計算字符串的echo
與不評估字符串的set
之間的差異更大。
因此,快速的答案是-使用該值時,請返回disabledelayedexpansion
模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.