簡體   English   中英

設置變量時如何在批處理文件中轉義特殊字符

[英]How to escape special characters on batch file when setting variable

我需要在批處理腳本中設置一個帶有字符串!5 [4U}〜YfWWre“ 4a的變量。我知道我必須在其中轉義一些特殊字符,但我不太正確。

我的延遲變量擴展為ON,並且基於https://www.robvanderwoude.com/escapechars.php ,我嘗試了以下操作:

  • SET PASS = ^^!5 [4U}〜YfWWre“ 4a
  • SET PASS = ^^!5 [4U}〜YfWWre“ 4a
  • SET PASS = ^^!5 [4U}〜YfWWre“” 4a
  • 設置“ PASS =!5 [4U}〜YfWWre” 4a“
  • 設置“ PASS = ^^!5 [4U}〜YfWWre” 4a“
  • 設置“ PASS = ^^!5 [4U}〜YfWWre”“ 4a”

他們都沒有為我工作。 我究竟做錯了什么?

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM