批量獲取部分路徑的最簡單方法是什麼?批量提取部分路徑
從其他「建議的問題」我現在意識到~dp0
,但它似乎是,僅適用於當前的工作目錄?
我希望得到一個子出一個環境變量,而不是。具體來說,一切都達到了最終的\
。
在bash,我可以newpath=${fullpath%\\*}
做到這一點,是有一個等效簡單的批處理構建?
批量獲取部分路徑的最簡單方法是什麼?批量提取部分路徑
從其他「建議的問題」我現在意識到~dp0
,但它似乎是,僅適用於當前的工作目錄?
我希望得到一個子出一個環境變量,而不是。具體來說,一切都達到了最終的\
。
在bash,我可以newpath=${fullpath%\\*}
做到這一點,是有一個等效簡單的批處理構建?
從我如何閱讀你的問題,你想要指定路徑的父目錄。
建立在什麼RGuggisberg回答,你可以做這樣的事情。
@echo off
call :Parent "%~dp0"
exit /b 0
:Parent <Path>
pushd "%~f1\.." || exit /b 1
echo %CD%
popd
exit /b 0
下面是一種方法(假設變量fullpath包含路徑)。無論是否存在尾隨,這都是有效的。另一種方法是修剪最後一個字符,但是假設你總是有一個尾部\,你可能不會?當然,您可能希望將%cd%存儲在某個其他變量中而不是回顯它。
pushd %fullpath%
echo.%cd%
popd
@jam查看'help set'的輸出。 –
果醬,%cd%是當前目錄。你可以在SET /的多個幫助頁面之一找到它。正如Ansgar Wiechers所建議的那樣。 – RGuggisberg
@Ruggisberg,我試過你的建議,它給了我完整的路徑(%fullpath%的最後一部分是一個文件夾,而不是文件名,如果這有所作爲?) – jam
這裏是爲了消除來自環境變量的尾部的反斜槓的方法:
@echo off
set "var=c:\program files\rock & roll\"
for /f "delims=" %%a in ("%var%\.") do echo set "var=%%~fa"
pause
感謝您的建議。我實際上想在這個例子中刪除「搖滾」,而不是一個尾隨的反斜槓,雖然再次看我的Q也許這不夠明確:) – jam
你需要一個或多個for循環,從'%獲得父文件夾〜dp0' – Endoro
難道我錯了我理解'〜dp0'給出基於當前目錄的輸出,那麼?你可以舉一個簡短的例子,把它作爲一個變量存儲路徑嗎? – jam
〜DP0返回驅動器:在命令行的路徑 - 所以,如果你輸入'C:\ BAT \ test.bat'和當前目錄是'd:\ backups'話〜DP0將返回'C:\ bat' – foxidrive