Windows Tips (by hanlray(at)gmail.com)
cmd /k
通常情况下双击执行一个bat文件,系统会启动一个cmd来执行bat中的命令,执行完后该cmd进程就退出。有时我们并不希望该cmd执行完后就退出,典型的情况是想用环境变量设置一个环境,然后在该环境中操作,如果该cmd退出了,那么设置好的环境也就消失了,因为每个cmd的环境变量都是独立的。在这种情况下可以使用cmd的/k参数,它在执行完bat文件后并不退出,一般写在快捷方式里用来快速设置一种环境。cmd的完全参考在 这里变量和环境变量
varname = value 设置变量,用%varname%引用其值 设置环境变量:set envname=value 察看环境变量:set evnname一般来说,用户定义的环境变量会覆盖系统定义的同名变量,不过有些变量不是覆盖,而是叠加的,比如Path变量,其初始值是系统设置的值后跟用户设置的值,注意用户设置的值在后。
环境变量的改变只影响改变后创建的进程,已经存在的进程不受影响。
clipboard查看器
windows内置了一个clipboard查看器,运行clipbrd.exe文件类型、扩展名及打开等
一个文件类型可以有多个扩展名,每个扩展名在HKEY_CLASSES_ROOT下都有对应的一个key,key名即为扩展名,如:HKEY_CLASSES_ROOT .h (Default) REG_SZ VisualStudio.h.8.0 PerceivedType REG_SZ text OpenWithList devenv.exe这里key的默认值VisualStudio.h.8.0被称为ProgID,也在HKEY_CLASSES_ROOT对应一个key,决定了该文件类型的文本描述、icon和用哪个程序打开等方面,如:
HKEY_CLASSES_ROOT VisualStudio.h.8.0 (Default) REG_SZ C/C++ Header DefaultIcon shell Open Command.h文件是一个文本文件,PerceivedType属性表达了这个信息,该属性把具有某个扩展名的文件归到一个更宽泛的文件类型,系统在下列位置寻找PerceivedType对应的key:
- HKEY_CLASSES_ROOT
- HKEY_CLASSES_ROOT/SystemFileAssociations 下面是名为text的PerceivedType对应的key的一个例子:
HKEY_CLASSES_ROOT text DefaultIcon OpenWithList EmacsClientW.exe Notepad.exe WordPad.exe Shell edit edit.emacs (Default) REZ_SZ Edit with Emacs command (Default) REG_SZ D:/green/ntemacs23/bin/emacsclientw.exe -n "%1" openOpenWithList就对应一个文件的右键菜单上的"打开方式",可以看到文件扩展名和其属于的PerceivedType都可以OpenWithList子key,”打开方式“列出的项应该是按照从特殊到一般的原则来排列的。
文件右键菜单的Open,Edit,Edit with ...菜单项等由shell子key决定,当有冲突发生时(比如这里VisualStudo.h.8.0和text的shell键下都有open子key),遵循特殊到一般的优先级;对于除open,edit子key的其他key(如edit.emacs),如果其有缺省值,则将其显示到右键菜单中,并按照其command键指定的方式处理。