我在我的批處理文件中有一個變量,它包含管道符號(這一個:|),所以當我回顯變量時,我得到一個關於無法識別的內部/外部命令的錯誤。批次回聲管道符號導致意外行爲
我需要一種方法來讓它正確迴應它或更好,但刪除一切後,幷包括|符號以及之前的任何額外空間。
我在我的批處理文件中有一個變量,它包含管道符號(這一個:|),所以當我回顯變量時,我得到一個關於無法識別的內部/外部命令的錯誤。批次回聲管道符號導致意外行爲
我需要一種方法來讓它正確迴應它或更好,但刪除一切後,幷包括|符號以及之前的任何額外空間。
有在Windows批處理文件中使用時通常必須進行轉義一些特殊字符。以下是部分列表:< > & |^%
轉義字符是^
。因此,要獲得一個文字|
,你應該這樣做:
echo ^|
當特殊字符是一個變量,它變得有點困難。但是如果你使用特殊的語法,你可以在這樣的變量替換字符:
set X=A^|B
REM replace pipe character with underscore
set Y=%X:|=_%
echo %Y%
REM prints "A_B"
必須逃脫|打印變種之前的字符。下面的打印A | B
@echo off
set x=a^|b
echo %x:|=^|%
非常感謝 - 這是針對問題「輸出變量(可能會包含管道)」的唯一「真正的」解決方案 - 實際上,「安全」腳本可能應該始終這樣做。 – 2017-07-24 14:00:48
如果您正在處理來自用戶/用戶系統的文件系統路徑,幾乎不可能正確地將您的方式轉換爲無特殊字符的東西。 (文件名可以包含%,!,^等) – Anders 2009-12-07 19:15:59
需要注意的是,執行^%不起作用,因爲%es需要用另一個%進行轉義(即使用%%)。 – Keen 2012-07-30 21:10:58