@echo off
set PTag=^<BR^>
echo %PTag%
我什麼也沒得到。
現在,有趣的是,如果最後的迴音之後有一個空行,我得到:
The syntax of the command is incorrect.
如果我刪除@echo關閉,則其實際輸出
echo <BR>
我想在變量中添加各種HTML標籤,然後連接這些變量來創建一個HTML,我將在文件中輸出。
@echo off
set PTag=^<BR^>
echo %PTag%
我什麼也沒得到。
現在,有趣的是,如果最後的迴音之後有一個空行,我得到:
The syntax of the command is incorrect.
如果我刪除@echo關閉,則其實際輸出
echo <BR>
我想在變量中添加各種HTML標籤,然後連接這些變量來創建一個HTML,我將在文件中輸出。
set PTag=^<BR^>
當你運行echo %PTag%
它擴展爲echo <BR>
這是一個無效的重定向設置值<BR>
到PTag
。您需要使用此
set PTag=^^^<BR^^^>
逃脫內PTag
的<
和>
第一^
逃逸本身,那麼下一個逃脫<
或>
您也可以使用此
set "PTag=^<BR^>"
第二種理由:內部引號^
失去它的特殊含義
如果它是一個引號(
"
)切換報價標誌,如果報價標誌有效,下列特殊字符不再特殊:^ & | < > ()
。How does the Windows Command Interpreter (CMD.EXE) parse scripts?
最特殊字符(
^
&
(
)
<
>
|
,也是標準定界符,
;
=
SPACETAB)只要療法被放置在""
之間失去其特定的含義,以及""
本身不會成爲變量值
的一部分,現在變量的值將^<BR^>
裏面,它會擴大echo %PTag%
到
echo ^<BR^>
這是一個有效的命令
只是引用您set
:
set "PTag=^<BR^>"
echo %PTag%
當你告訴變量值就使用延遲擴展:
@echo off
setlocal EnableDelayedExpansion
set "PTag=<BR>"
echo !PTag!
謝謝。你還可以添加關於答案的解釋嗎?我不是很好,因爲它可能很明顯,因爲我不知道引號可以用來包裝任務。更確切地說,我不明白爲什麼轉義字符在引號中起作用。什麼時候應該決定圍繞命令參數使用引號? – Axonn
現在你提到它了,我不完全確定爲什麼,我只知道它的工作原理:)關於被轉義字符和作爲行續字符我想,這個鏈接可能會給你一個更好的解釋http:// www .robvanderwoude.com/escapechars.php –