Search code examples
windowsfor-loopbatch-filecmddirectory

split path and take last folder name in batch script


I want to split the string (having a path) with \and take last folder name in a variable. Please help.

e.g
mypath=D:\FOLDER1\FOLDER2\FOLDER3\

I want FOLDER3 in a variable.

I tried with the command below which is working if the the last character is not \ :

for %f in (C:\FOLDER1\FOLDER2\FOLDER3) do set myfolder=%~nxf

It is not working if the last character is \

Also it is not working if variable is used like : for %f in (%mypath%) do set myfolder=%~nxf


Solution

  • @echo off
    
    set MYDIR=C:\FOLDER1\FOLDER2\FOLDER3\
    if "%MYDIR:~-1%" == "\" set "MYDIR1=%MYDIR:~0,-1%"
    
    for %%f in ("%MYDIR1%") do set "myfolder=%%~nxf"
    echo %myfolder%
    

    outputs

    FOLDER3