我在Windows命令行中並希望變量中的父文件夾。如何在命令提示符下獲取父文件夾的名稱?
假設當前目錄是「C:\ foo \ bar」,我怎樣才能得到值「bar」?
我在期待類似於「在CD中查找最後一個反斜槓,就是這樣」。
請,沒有PowerShell參考;我想要簡單的舊Windows命令行操作。
我在Windows命令行中並希望變量中的父文件夾。如何在命令提示符下獲取父文件夾的名稱?
假設當前目錄是「C:\ foo \ bar」,我怎樣才能得到值「bar」?
我在期待類似於「在CD中查找最後一個反斜槓,就是這樣」。
請,沒有PowerShell參考;我想要簡單的舊Windows命令行操作。
我的解決方案使用替代和根目錄的作品,以及:
call set PARENT_DIR=%CD%
set PARENT_DIR=%PARENT_DIR:\= %
set LAST_WORD=
for %%i in (%PARENT_DIR%) do set LAST_WORD=%%i
echo %LAST_WORD%
這似乎是讓當前目錄名,並將其存儲在環境變量bar
:
for %i in (%CD%) do set bar=%~ni
這工作,因爲%CD%
包含當前目錄,%~n
條for循環(循環的輸出一個值,%CD%
)添加到'文件名'部分。
(請注意,如果你在一個批處理文件中使用此,使用%%i
和%%~ni
代替。)
這不,但是,對於一個驅動器的根目錄下工作,這反而未設置bar
,因爲%~ni
將評估爲無。
PMOD有一個整潔的解決方案;我不確定我的作品是否適用於根文件夾。但我想我會把它包含在這裏供人們看。
set myPath=%cd%
pushd ..
set parentPath=%cd%
popd
echo myPath = "%myPath%"
echo parentPath = "%parentPath%"
call set myDir=%%myPath:%parentPath%\=%%
echo myDir = "%myDir%"
@ PMOD的答案(我缺乏代表評論)可用於根目錄下工作,但如果有在名稱中使用空格這是行不通的。
這是一個稍微改進的版本(在拆分之前用/代替空格,然後在完成時用逆代替)。
call set PARENT_DIR=%CD%
set PARENT_DIR=%PARENT_DIR: =/%
set PARENT_DIR=%PARENT_DIR:\= %
set LAST_WORD=
for %%i in (%PARENT_DIR%) do set LAST_WORD=%%i
set LAST_WORD=%LAST_WORD:/= %
echo %LAST_WORD%
你打敗了我,你有一個更好的解決方案 - 我不知道我的根文件夾的作品。 – 2010-06-09 09:50:26