2016-03-19 5 views
0

私はこのコードを持っていますが、動作していないようです。なぜ私はうまくいかないことができます。バッチで指定されたパスから最後のフォルダを削除する方法

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

私は~0,-1からdirを設定しているように見えるライン

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

までそれを縮小しているが、それは意味があるため行わないI別のプログラムでまったく同じ行を使用し、うまくいきました。

BTW:このコードは、現在のディレクトリパスから最後のフォルダ名を削除するためのものです。

ご協力いただきありがとうございます。

答えて

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コマンドでは、最初の引数の前後に引用符がありませんでした。

ここでそれを行うための簡単な方法は、(for /?を参照)シンプルforループと~dp拡張を使用し、指定されたパスから最後のフォルダ名を削除するには...

+0

ありがとう、これは完全に機能しました。 – sonrad10

0

です:

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

あなたは、文字ごとに分割して、\を検索する必要はありません。

注:
私は同じようにという内部コマンドがあるので、混乱を避けるために、変数名dirを使用しないことをお勧めします。

関連する問題