2016-03-19 19 views
0

我有這段代碼,但它似乎沒有工作;我不明白爲什麼:如何從批處理中給定的路徑中刪除最後一個文件夾

set dir = %cd% 
:char 
set dir=%dir:~0,-1% 
IF %dir:~-1%=="\" (goto end) else (goto char) 
:end 

我已經把範圍縮小到線

set dir=%dir:~0,-1%

,這似乎是設置dir~0,-1,但沒有任何意義,因爲我在另一個程序中使用完全相同的行,並且它工作正常。

順便說一句:此代碼旨在從當前目錄路徑中刪除最後一個文件夾名稱。

在此先感謝您的幫助。

回答

0
@ECHO Off 
SETLOCAL 
set "dir=%cd%" 
:char 
set dir=%dir:~0,-1% 
IF "%dir:~-1%"=="\" (goto end) else (goto char) 
:end 
SET di 
FOR /f %%a IN ("%cd%") DO SET "dir=%%~dpa" 
SET di 

GOTO :EOF 

set識別空間上分配的每一側,因此你在指定的當前目錄「DIR 空間」和dir沒有設置在所有。

您的if命令缺少圍繞第一個參數的引號。

這裏做一個簡單的方法...

+0

謝謝,這工作完美。 – sonrad10

0

從給定的路徑中刪除最後一個文件夾的名稱,使用簡單for循環和~dp擴展(見for /?):

set "FOLDER=%CD%" 
for /D %%D in ("%FOLDER%") do (
    set "PARENT=%%~dpD" 
) 
echo Last folder removed: %PARENT% 

不需要按字符分割字符,並且按照您的要求搜索\

注:
我建議不要使用變量名dir以避免混淆,因爲一個同樣名爲內部命令。

相關問題