2011-06-29 21 views
7

棘手的問題之一。如何在批處理文件中正確地轉義以下內容?轉義以正斜槓和問號開頭的批處理文件回顯

echo /? display this help text 

這種特殊字符的組合被視爲一個 「ECHO /?」命令:

C:\Batch>ECHO  /? display this help text 
Displays messages, or turns command-echoing on or off. 

    ECHO [ON | OFF] 
    ECHO [message] 

Type ECHO without parameters to display the current echo setting. 

它不響應脫字符(^)轉義,即。我試過^ /?/^?和^/^ ?.

NB:作爲一種變通方法,我發現,在足以繞過ECHO命令行處理器之間,例如插入其它字符:

echo ... /? display this help text 

不過,這是不理想的,我想知道是否有一實現所需輸出的方式,即用/?在迴應消息的開始處。

回答

5

轉義回聲參數,您可以使用替代語法echo.

echo./? 
+0

謝謝!這是有效的,你甚至可以用空格填充它。 – Mykro

+0

'echo.'總是訪問磁盤,並且輸出失敗,例如'echo。\ .. \ mybat.bat'(如果mybat.bat存在於當前目錄中) – jeb

+0

@Jeb:非常有趣。 –

5

轉義回聲參數存在很多變種,比如echo.echo:echo=
但只有echo(似乎對任何附加安全文本。

這些之一發生故障,如果文件存在像echoecho[echo]echo+

echo. 
echo[ 
echo] 
echo+

這些之一發生故障,如果在當前目錄中的文件是否存在命名my.bat

echo\..\my.bat 
echo:\..\my.bat 
echo.\..\my.bat

這些一個文件獨立失敗

echo/? 
echo,/? 
echo;/?

只有echo(似乎總是對任何內容安全

+0

還有'echo =',它也可以被'/?'打破。 –

+0

這些變體在哪裏記錄?或者他們爲什麼可能?這一切看起來像一個錯誤。 – utapyngo

+2

@utapyngo cmd.exe是十二隻猴子的隨機結果。沒有文件,只是測試(很多測試) – jeb