2017-04-11 73 views
1

當我嘗試我如何添加大於和小於到一個批處理文件變量

@echo off 
set PTag=^<BR^> 
echo %PTag% 

我什麼也沒得到。

現在,有趣的是,如果最後的迴音之後有一個空行,我得到:

The syntax of the command is incorrect. 

如果我刪除@echo關閉,則其實際輸出

echo <BR> 

我想在變量中添加各種HTML標籤,然後連接這些變量來創建一個HTML,我將在文件中輸出。

回答

3

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)只要療法被放置在""之間失去其特定的含義,以及""本身不會成爲變量值

Special Characters in Batch File


的一部分,現在變量的值將^<BR^>裏面,它會擴大echo %PTag%

echo ^<BR^> 

這是一個有效的命令

3

只是引用您set

set "PTag=^<BR^>" 
echo %PTag% 
+0

謝謝。你還可以添加關於答案的解釋嗎?我不是很好,因爲它可能很明顯,因爲我不知道引號可以用來包裝任務。更確切地說,我不明白爲什麼轉義字符在引號中起作用。什麼時候應該決定圍繞命令參數使用引號? – Axonn

+1

現在你提到它了,我不完全確定爲什麼,我只知道它的工作原理:)關於被轉義字符和作爲行續字符我想,這個鏈接可能會給你一個更好的解釋http:// www .robvanderwoude.com/escapechars.php –

1

當你告訴變量值就使用延遲擴展:

@echo off 
setlocal EnableDelayedExpansion 

set "PTag=<BR>" 
echo !PTag! 
相關問題