簡體   English   中英

帶空格的批處理路徑變量-如何轉義雙引號?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM