Loop over folder string and parse out last folder name

后端 未结 13 1487
-上瘾入骨i
-上瘾入骨i 2020-12-03 05:39

I need to grab the folder name of a currently executing batch file. I have been trying to loop over the current directory using the following syntax (which is wrong at prese

13条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-03 06:10

    Sheesh guys, what a mess. This is pretty easy, and it's faster to do this in memory without CD.

    This gets the last two directories of a path. Modify it as required to get the last tokens of any line. My original code I based this on has more complexity for my own purposes.

    Fyi, this probably doesn't allow paths with exclamation marks since I'm using enabledelayedexpansion, but that could be fixed.

    It also won't work on a plain drive root. This could be averted in a number of ways. Check what the input path ends with, or a counter, or modifying the token and check behaviour, etc.

    @echo off&setlocal enableextensions,enabledelayedexpansion
    
    call :l_truncpath "C:\Windows\temp"
    
    ----------
    
    :l_truncpath
    set "_pathtail=%~1"
    :l_truncpathloop
    for /f "delims=\ tokens=1*" %%x in ("!_pathtail!") do (
    if "%%y"=="" (
    set "_result=!_path!\!_pathtail!"
    echo:!_result!
    exit/b
    )
    set "_path=%%x"
    set "_pathtail=%%y"
    )
    goto l_truncpathloop
    

提交回复
热议问题