2013-10-24 217 views
1

我已經搜索並找到了幾個這樣的例子,但我似乎沒有得到任何工作......我正在寫一個簡單的Windows批處理腳本解壓縮文件。在我的批處理腳本我有一個變量,zip文件,這是動態分配的,如文件夾和子文件夾最近的Zip文件:批處理命令只從字符串獲取文件路徑

for /f "tokens=*" %%a in ('dir d:\temp\*.zip /s /b /od') do set zipfile=%%a 

爲了簡化,考慮到值:

set zipfile=d:\temp\mysubfolder\myfile.zip 

我怎麼能獲取完整路徑,「d:\ temp \ mysubfolder \」?謝謝!

回答

1

簡單:

for /f "tokens=*" %%a in ("%zipfile%") do (set fullpath=%%~dpa) 
Echo %fullpath% 

完成!確保%zipfile%沒有周圍的引號。

蒙娜麗莎

+0

謝謝!根據需要繼續操作,得到我的%fullpath%變量。 – mahiro

+1

@mahiro較短,結果相同:'%for %% a(%zipfile%「)設置爲」fullpath = %%〜dpa「 – Endoro

+0

@Endoro但那不包括空格 – Monacraft

1

call /?如何使用批處理文件中的標籤。 它還解釋瞭如何從參數中提取驅動器,路徑和文件名。

set zipfile=d:\temp\mysubfolder\myfile.zip 
call :SETZIPPATH %zipfile% 
goto:eof 

:SETZIPPATH 
set zippath=%~dp1 

您也可以在for循環內進行調用。

+1

謝謝!與我的批處理腳本上面的代碼行,但欣賞提示!之前我並不知道批量文件的這些標籤,所以這是我下一次學到的東西。 – mahiro

+0

太好了。我很高興你學到了一些東西,我希望它能讓你在未來批量生產更容易。 –

+0

+1,但'call'比'for/f'慢 - > http://www.dostips.com/forum/viewtopic.php?p=10681 – npocmaka

相關問題