Get full path and long file name from short file name

前端 未结 10 759
故里飘歌
故里飘歌 2020-12-15 09:13

I have an nice console file manager (eXtreme by Senh Liu), it passes short path/filenames as variables to a menu.bat.

How can I generate a full folder name + long fi

10条回答
  •  春和景丽
    2020-12-15 09:30

    And one attempt with WMIC and Win32_Directory.Probably is slower than using cd and dir , but the current directory is not changed:

    @echo off
    :get_full_name [%1 - short path to a file or directory ; %2 - if set stores the result in variable with that name]
    setlocal 
    if not exist "%~1" ( echo file/dir does not exist & exit /b 2 )
    for /f "delims=" %%n  in ('dir /b /n "%~dps1\*%~snx1"') do set "name=%%n"
    
    set "short_path=%~dps1"
    set "short_path=%short_path:~0,-1%"
    set "drive=%short_path:~0,2%"
    
    set "full_name="
    
    :repeat
    set "short_path=%short_path:\=\\%"
    set "short_path=%short_path:'=\'%"
    
    FOR /F "usebackq skip=2 delims=" %%P in (`WMIC path win32_directory where name^='%short_path%'  get Path^,FileName /Format:Textvaluelist.xsl`) do  for /f "delims=" %%C in ("%%P") do (
        set "_%%C"
    )
    set "_Path=%_Path:~0,-1%"
    
    set full_name=%_FileName%\%full_name%
    if "%_Path%" NEQ "" (
        set "short_path=%drive%%_Path%"
        goto :repeat
    ) else (
        set full_name=%drive%\%_FileName%\%full_name%
    )
    echo %full_name%%name%
    endlocal  if "%~2" NEQ ""  set "%~2=%full_path%%name%"
    

    Not heavy tested yet....

提交回复
热议问题