[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] 批处理实现绝对路径转换相对路径

  1. @echo off & setlocal enabledelayedexpansion
  2. set /p "abspath=U盘绝对路径:"
  3. if not defined abspath goto :eof
  4. if not exist "!abspath!" goto :eof
  5. if not "!abspath:~-1!"=="\" set "abspath=!abspath!\"
  6. call :pathlen
  7. for /r "%abspath:~0,2%" %%i in (.) do (
  8.     setlocal
  9.     set "_abspath=%%i" & set "_abspath=!_abspath:~0,-1!"
  10.     call :getrelpath "!_abspath!"
  11.     for /f "tokens=1* delims=\" %%q in ("!abspath!") do set "rel=!rel:~3!%%r"
  12.     if /i "!_abspath:~0,%pathlen%!"=="!abspath!" set rel=!_abspath:~%pathlen%!
  13.     echo !_abspath! ---^> !rel!
  14.     endlocal
  15. )
  16. pause>nul
  17. goto :eof
  18. :getrelpath
  19. for /f "tokens=1* delims=\" %%i in ("%~1") do (
  20.     set rel=..\!rel!
  21.     call :getrelpath "%%j"
  22. )
  23. goto :eof
  24. :pathlen
  25. for /l %%i in (0 1 100) do if "!abspath:~%%i,1!"=="" set "pathlen=%%i" & goto :eof
  26. goto :eof
复制代码



本来就不是什么技术性的。发给大家学习玩玩吧

本来打算autorun.inf和desktop.ini用的。输入一个路径。比如i:\system  它会列出i:\所有的路径并转换成相对于i:\system的路径

TOP

返回列表