2011-12-05 22 views
1

我有一些相對路徑,如\foo\bar\baz.txt,我需要提取\foo\bar但我不能使用%~p1,因爲這給我一個相對於當前目錄的路徑,我做不想。有沒有一個簡單的方法來做到這一點?批處理文件提取一切直到最後發生''

+0

你可以使用for循環來分割/字符嗎?我認爲這是windows bat文件,但你的例子是unixy? – davidfrancis

+0

爲了清晰起見,固定路徑。 –

+0

據我所知,單個'〜p'修飾符總是計算到一個'幾乎'的絕對路徑,僅相對於當前驅動器,而不是*當前目錄。你甚至可以從裸露的名字中提取出路徑。試試這個,你會看到:'FOR%A IN(abc)DO ECHO%〜pA'。無論如何,這個例子只是說明'〜p'可能不適合你,如果給定的路徑*是一個相對的路徑,因爲'〜p'會將它擴展到絕對路徑。 –

回答

0

唯一相對於你的路徑是相對於當前驅動器。您可以使用%〜dp1來獲取完整的絕對路徑。另一種選擇是使用FOR變量擴展而不是參數擴展。

for %%F in ("\foo\bar\baz.txt") do set myPath="%%~dpF" 

該解決方案應該總是給一個完整的絕對路徑的任何路徑,包括相對路徑。