[英]Batch path variable with space - how to escape the double quotes?
我在此目錄中設置了一個變量
C:\My dir\Sub dir\Folder with a lot of spaces\file.html
像這樣:
SET location="C:\My dir\Sub dir\Folder with a lot of spaces\file.html"
問題是,當我回顯%location%
它帶有兩個雙引號。 我嘗試使用以下方法刪除:
set location=%location:"=\"%
但這行不通。 我搜索了很多東西,但找不到簡單的解決方案。 我正在使用Windows 8。
一個簡單的解決方案是存儲不帶引號的路徑,如下所示:
SET "location=C:\My dir\Sub dir\Folder with a lot of spaces\file.html"
這樣,該值將不帶引號存儲,並且SET語句仍將受到保護,免受某些特殊字符的影響。 然后,您可以將%location%
括在引號中,或者根據需要省略引號。 例如,如果您使用值作為某些命令的參數,則可能需要在其周圍加上引號:
"%location%" …
…
而且,如果只需要輸出路徑,則引號可能是不必要的,並且很容易省略它們:
ECHO Location: %location%
…
請注意,如果路徑中包含具有特殊含義的字符(如&
,則在不帶引號的情況下回顯路徑會導致此類字符在%
求值中進行解釋。 為避免這種情況,您可以臨時啟用並使用延遲擴展:
SETLOCAL EnableDelayedExpansion
ECHO Location: !location!
ENDLOCAL
…
使用set "location=C:\\My dir\\Sub dir\\Folder with a lot of spaces\\file.html"
來保留空格,但不要使用雙引號。
不要在Set
使用引號。
稍后,當您使用該變量時,應在其周圍加上引號,例如
type "%location%"
這也會刪除引號
set location=%location:"=%
您認為我用反斜杠和引號代替了引號,不是很有用。
為什么還要將其放入變量?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.