上一篇文章介绍了Ubuntu环境下的快捷目录跳转功能,还觉得不过瘾,因为除了Linux下有命令行外,在Windows上我也经常使用CMD进行某些操作以提高效率或是必须在命令行下才能进行的操作,在GitHub上搜索 jeroenhjanssens 这个关键字(他是Linux下那个工具的发明者)的时候,碰巧搜到了dictoon/marks他的项目介绍为:A port of Jeroen Janssens’ marks tools to Windows.
即Windows版的快捷目录跳转实现。
安装:
在GitHub上下载该项目的所有文件,可以只将 j.bat / m.bat / marks.bat / unmark.bat 这4个批处理文件放在一个你觉得合适的地方,然后记得将该路径添加至系统路径中,在你使用的时候,它会在你存放的目录下新建一个叫做mark的子目录用于存放后缀为.mark的文件,文件内容其实就是标记的路径。
使用方法:
m <name> # to create a named shortcut to the current directory. Example: m docs j <name> # to follow a given shortcut. Example: j docs unmark <name> # to delete a given shortcut. Example: unmark docs marks # to print all available shortcuts.
使用示例:
C:Windows> mark win C:Windows> marks win -> C:Windows C:Windows> cd .. C:> jump win C:Windows>
最后,我一般是用的快捷方式有:
- hosts -> C:WindowsSystem32driversetc
- php55 -> C:php-5.5.9-Win32-VC11-x64
- py27 -> C:Python27Scripts
- py34 -> C:Python34Scripts
———-
这里面涉及到的4个批处理脚本:
m.bat(为当前目录创建shortcut)
@echo off if ("%~1") == ("") echo Please specify mark name.&&exit /b 1 for /f "delims=*+,/:;<=>?[]|" %%a in ("%~1") do if not ("%%~a") == ("%~1") echo Please do not use special characters in the mark name.&&exit /b 1 if not exist "%~dp0marks" mkdir "%~dp0marks" echo %CD%>"%~dp0marks%~1.mark"
j.bat(跳转至指定的shortcut代表的目录)
@echo off if ("%~1") == ("") echo Please specify mark name.&&exit /b 1 for /f "delims=*+,/:;<=>?[]|" %%a in ("%~1") do if not ("%%~a") == ("%~1") echo Please do not use special characters in the mark name.&&exit /b 1 if not exist "%~dp0marks%~1.mark" echo Mark does not exist: %~1&&exit /b 1 for /F "usebackq delims=" %%i in ("%~dp0marks%~1.mark") do if exist "%%i" (%%~di && cd "%%i") else (echo Jump destination does not exist: %%i)
marks.bat(显示所有已创建的shortcuts)
@echo off if not exist "%~dp0marks*.mark" echo No marks exist.&&exit /b 1 for /f "delims=" %%f in ('dir /b "%~dp0marks*.mark"') do (for /F "usebackq delims=" %%i in ("%~dp0marks%%f") do echo %%~nf -^> %%i)
umark.bat(解除指定shortcut)
@echo off if ("%~1") == ("") echo Please specify mark name.&&exit /b 1 for /f "delims=*+,/:;<=>?[]|" %%a in ("%~1") do if not ("%%~a") == ("%~1") echo Please do not use special characters in the mark name.&&exit /b 1 if not exist "%~dp0marks%~1.mark" echo No mark exists with name: %~1&&exit /b 1 del "%~dp0marks%~1.mark"
其实可以从这几个batch脚本中学到很多实用的Windows命令行下的字符串处理技巧。