|
|
发表于 2015-8-12 15:11:43
|
显示全部楼层
本帖最后由 bailong360 于 2015-8-12 19:19 编辑
- @echo off
- set ShortPath=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
- call :GetLongPath LongPath "%ShortPath%"
- echo %ShortPath%
- echo %LongPath%
- pause
- :GetLongPath [RetVar] [ShortPath] by bailong360 @bbs.bathome.net
- @echo off&setlocal enabledelayedexpansion&set "S=%~2"&set "S=!S:\= !"
- (for %%i in (!S!) do set /a n+=1&set "D!n!=%%i")&set "D1=!D1!"&set /a n-=1
- (for /l %%i in (1 1 !n!) do (cd /d "!D%%i!"&set /a n=%%i+1
- for %%j in (!n!) do (set "t=!D%%j:~,-1!?"&for /d %%k in (!t!) do (
- if "%%~snxk"=="!D%%j!" set "L=!L!\%%~k"))))&if not exist "%~2" (for %%i in (!n!) do (
- set "t=!D%%i:~,-1!?"&for /r %%j in (!t!) do if "%%~snxj"=="!D%%i!" set "L=!L!\%%~nxj"))
- endlocal&set "%~1=%D1:~,2%%L%"&goto :eof
复制代码 参考资料:http://stackoverflow.com/questio ... rom-short-file-name
已修改,代码虽然看起来像屎一样,但效率还是挺高的 |
评分
-
查看全部评分
|