平时习惯用一些linux命令来完成工作,在Windows上有cygwin和gitbash两个选择。这两个我都装了。

相对来说cygwin支持的功能更多一些,但是它没有默认绑定到右键菜单。为此,我想到用万能的注册表解决这个事情。网上搜索了一下,把我眼中best answer贴出来供大家分享。

注把下面代码保存成cygwin.bat 放到cygwin安装目录的bin目录里面,然后用管理员权限启动cmd去运行该脚本 如 cygwin.bat /HELP

@echo off

rem current filename
echo "%~f0"
rem current filedir
echo "%~dp0"
echo "Usually it is runned with Administrator power" rem It is assumed that this script is located under the Cygwin binaries
rem directory. Usually it is "c:\cygwin\bin". Put this file as the
rem "cyghere.bat" under this directory and perform the command
rem "cyghere.bat /install" to install the script as a part of Windowds
rem Explorer. Once installed it will be available as "Cygwin Here" item in
rem the context menu of Windows Explorer. if /i "%~1" == "/HELP" (
echo:Cygwin Here
echo:
echo:Usage:
echo:%~n0 [/HELP ^| /INSTALL ^| /UNINSTALL ^| /LIST ^| "folder"]
goto :EOF
) rem Add/Remove/List the registry keys
rem HKEY_CLASSES_ROOT\Directory\shell\Cygwin Here
rem HKEY_CLASSES_ROOT\Directory\Background\shell\Cygwin Here
rem HKEY_CLASSES_ROOT\Drive\shell\Cygwin Here if /i "%~1" == "/INSTALL" (
for %%p in ( "Drive" "Directory" "Directory\Background" ) do (
echo "longwind"
reg add "HKEY_CLASSES_ROOT\%%~p\shell\Cygwin Here" /v "Icon" /t "REG_SZ" /d "%~dp0\..\Cygwin.ico" /f
reg add "HKEY_CLASSES_ROOT\%%~p\shell\Cygwin Here\command" /ve /d "\"%~f0\" \"%%V\"" /f
)
goto :EOF
) if /i "%~1" == "/UNINSTALL" (
for %%p in ( "Drive" "Directory" "Directory\Background" ) do (
reg delete "HKEY_CLASSES_ROOT\%%~p\shell\Cygwin Here" /f
)
goto :EOF
) if /i "%~1" == "/LIST" (
for %%p in ( "Drive" "Directory" "Directory\Background" ) do (
reg query "HKEY_CLASSES_ROOT\%%~p\shell\Cygwin Here" /s
)
goto :EOF
) rem Proceed to the specified folder
if not "%~1" == "" pushd "%~1" || goto :EOF rem Run Cygwin in the specified directory
start "Cygwin Here" "%~dp0mintty.exe" -i /Cygwin-Terminal.ico -h start "%~dp0bash.exe" -l -c "cd '%cd%' ; exec bash"
popd

代码主体是照抄前人的,如侵删~

我加了图标项,以及一些注释。

顺便说一句,windows上的bat脚本相当于linux上的shell脚本,rem相当于#,goto :EOF 相当于exit。

其中reg add,reg query都是reg命令,我修改上述脚本时参考园封记忆

感谢互联网以及无私分享知识的前人们,我等也要继承这份精神!

参考:

1. 好库文摘 http://doc.okbase.net/jevyzhu/archive/82840.html

2. 博客园 http://www.cnblogs.com/fanyf/p/4221488.html

Cygwin-添加到右键菜单脚本--一键安装、卸载的更多相关文章

  1. UltraEdit程序设置添加到右键菜单

    http://hellofs.blog.51cto.com/6109153/1180681 以前安装UltraEdit软件,在安装过程中选择将其添加到右键菜单,安装完成后就可以正常显示在右键菜单,这样 ...

  2. (整理)Sublime Text 3 安装、破解、安装Package Control、汉化、添加到右键菜单、代码格式化、禁止更新

    Sublime Text 3好用,但是每次安装到最后用着顺手,得在网上找半天安装.破解.安装Package Control.汉化.添加到右键菜单.代码格式化等等的教程,今天有空给自己整理一下吧. 一. ...

  3. Beyond Compare3 添加到右键菜单

    Beyond Compare 是个优秀的工具,我们经常用于对比文件和文件夹,右键点点就可以调用对比,着实很方便.但从3.2版本之前,我们可以从设置中将bc关联到文件夹和文件右键,但之后的版本已经找不到 ...

  4. Beyond Compare3 注册密钥和添加到右键菜单

    本人使用的是 Beyond Compare 3 ,版本 3.3.8(build 16340),密钥应收Beyond Compare 3都能够使用. 如想查看密钥,请参考本文末尾的隐藏内容 Beyond ...

  5. Centos 6.4上面用Shell脚本一键安装mysql 5.6.15

    Centos 6.4上面用Shell脚本一键安装mysql 5.6.15  #!/bin/bash if [ `uname -m` == "x86_64" ];then machi ...

  6. sublime使用技巧之添加到右键菜单、集成VI

    熟悉开发工具,减少多余的操作流程有助于提高开发效率,而Sublime Text 2是sublime产品的经典版本,因此本文基于Sublime Text 2讲解sublime的使用技巧. VI的主要作用 ...

  7. 添加系统右键菜单项 管理员取得所有权(W)(带盾牌)

    @color 0A @title 添加系统右键菜单项 管理员取得所有权(^&W)(带盾牌) by wjshan0808 @echo off echo * >nul reg add HKC ...

  8. Centos 6.4上面用Shell脚本一键安装vsftpd

    Centos 6.4上面用Shell脚本一键安装vsftpd install.sh #!/bin/bash if [ `uname -m` == "x86_64" ];then m ...

  9. 如何在C#添加鼠标右键菜单

    C#添加鼠标右键方法步骤: 1 选中要添加右键功能的Form或者控件,打开控件的设计页面. 2 从工具箱中找到ContextMenuStrip控件,将这个控件拖曳到Form或者控件的设计页面上.这时系 ...

随机推荐

  1. 201521123084 《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 1)线程:指进程中的一个执行流程: 2)一个进程可以同时运行多个不同线程,不同线程执行不同的任务: 3)创建 ...

  2. 团队作业4——第一次项目冲刺(Alpha版本)2017.4.26

    2017.04.26 天气热. 时间:上午 9:35 ---10:10分 地点:陆大304实验室 会议内容:今天将昨天的的一些问题进行了讨论,以及针对助教提出的问题进行了分析,是因为我们昨天经过讨论后 ...

  3. 201521123024 《Java程序设计》第6周学习总结

    1. 本周学习总结 2. 书面作业 1.clone方法 1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 用protected修饰 ...

  4. 从GO内存模型与调用协议理解defer closure的坑

    资料参考: 官网defer介绍: https://blog.golang.org/defer-panic-and-recover 深入解析go: 多值返回: https://tiancaiamao.g ...

  5. 浅谈SQL优化入门:1、SQL查询语句的执行顺序

    1.SQL查询语句的执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_ ...

  6. 02函数-04-箭头函数(ES6)

    ES6新增的函数:Arrow Function,定义方式就是一个箭头 箭头函数相当于匿名函数,并且简化了函数定义,和匿名函数最大的区别在于其内部的this不再"乱跑",而是由上下文 ...

  7. appium实例编写(1)---以ContactsTest.apk 操作为例

    详情参照   http://www.cnblogs.com/puresoul/p/4696825.html#3326873   自己练习一遍 前言: appium环境搭建参照另一篇博客:http:// ...

  8. Javascript跳转页面和打开新窗口等方法

    1.在原来的窗体中直接跳转用onClick="window.location.href='你所要跳转的页面';" 2.在新窗体中打开页面用:onclick="window ...

  9. Struts2-在js中使用struts2标签

    1, 支行是下拉列表,自助银行也是下拉列表,它们是级联关系; <tr> <th width="17%"><span>*</span> ...

  10. Qt Creator编译运行成功,但是显示系统找不到指定的文件(比如urlmon.dll动态链接库)

    问题: 以前自己写的一个QT界面程序,在win 7 的32位系统上运行没有出现任何问题,但是重装系统之后,同样的程序放到win10 的64位系统下运行会出现警告:onecoreuap\inetcore ...