2013-07-12 52 views
1

批量獲取部分路徑的最簡單方法是什麼?批量提取部分路徑

從其他「建議的問題」我現在意識到~dp0,但它似乎是,僅適用於當前的工作目錄?

我希望得到一個子出一個環境變量,而不是。具體來說,一切都達到了最終的\

在bash,我可以newpath=${fullpath%\\*}做到這一點,是有一個等效簡單的批處理構建?

+0

你需要一個或多個for循環,從'%獲得父文件夾〜dp0' – Endoro

+0

難道我錯了我理解'〜dp0'給出基於當前目錄的輸出,那麼?你可以舉一個簡短的例子,把它作爲一個變量存儲路徑嗎? – jam

+0

〜DP0返回驅動器:在命令行的路徑 - 所以,如果你輸入'C:\ BAT \ test.bat'和當前目錄是'd:\ backups'話〜DP0將返回'C:\ bat' – foxidrive

回答

1

從我如何閱讀你的問題,你想要指定路徑的父目錄。

建立在什麼RGuggisberg回答,你可以做這樣的事情。

@echo off 
call :Parent "%~dp0" 
exit /b 0 

:Parent <Path> 
pushd "%~f1\.." || exit /b 1 
echo %CD% 
popd 
exit /b 0 
0

下面是一種方法(假設變量fullpath包含路徑)。無論是否存在尾隨,這都是有效的。另一種方法是修剪最後一個字符,但是假設你總是有一個尾部\,你可能不會?當然,您可能希望將%cd%存儲在某個其他變量中而不是回顯它。

pushd %fullpath% 
echo.%cd% 
popd 
+0

@jam查看'help set'的輸出。 –

+0

果醬,%cd%是當前目錄。你可以在SET /的多個幫助頁面之一找到它。正如Ansgar Wiechers所建議的那樣。 – RGuggisberg

+0

@Ruggisberg,我試過你的建議,它給了我完整的路徑(%fullpath%的最後一部分是一個文件夾,而不是文件名,如果這有所作爲?) – jam

1

這裏是爲了消除來自環境變量的尾部的反斜槓的方法:

@echo off 
set "var=c:\program files\rock & roll\" 
for /f "delims=" %%a in ("%var%\.") do echo set "var=%%~fa" 
pause 
+0

感謝您的建議。我實際上想在這個例子中刪除「搖滾」,而不是一個尾隨的反斜槓,雖然再次看我的Q也許這不夠明確:) – jam