美化并加密自己的CMD命令行(并使其支持少许Linux命令)

  今天闲来无事,不知怎么的心血来潮,想起来要美化一下自己的CMD命令行窗口。后来回忆起很久很久以前看杂志说过可以顺带给他加密、让CMD支持少许Linux下的命令行(因为是用doskey命令来映射的,所以只能支持少许)

  先来看看效果图吧:

  虽说不是什么特别绚丽,至少让它更符合自己的使用习惯了。接下来就说说怎么美化它吧,其实这个很简单,只要写一个BAT文档放在特殊位置就可以了,不过这样用的时候,网上大部分技术文档建议使用“.cmd”后缀,不要紧了,其实就是bat的语法。

  在Windows的注册表中,有一个地方是管理CMD的,在“[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]”这个地方有一个名为“AutoRun”的的字符串值,里面的内容可以是一个批处理,这样的话每次进入“CMD”就会先运行那个批处理,所以做这些美化加密就从那个批处理入手吧。

  那个批处理原文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
@echo off
cls
echo -----------------------------------------
echo ☆ .·°∴° ★·°∴°∴°.☆°★°∴°
echo °∴ 那怕星际无垠 ☆° .·★°∴°.°°
echo ∴°.°★ .·°∴°.°∴°.★☆° .·
echo °.☆° 我也要追到你.★· °.°°.★
echo .·°∴★°.°∴°.☆° .·°∴°.°
echo .·°∴°★.并永远爱你.°∴·°°∴☆°
echo ☆ .·°∴° ☆..·°∴★°天悬星河∴·
echo ∴°★.☆° .☆..·°★.° .·。∴°
echo -----------------------------------------
echo 现在时间是:%date% %time%
echo -----------------------------------------
color 0a

rem===此处用于转换Linux常用命令===

prompt 天悬星河$B$P$G$S
doskey ls=dir
doskey pwd=chdir
doskey clear=cls
doskey mv=move
doskey rm=del

rem===============================

setlocal
set pass=0
set times=2

echo 为安全起见,CMD命令已加密!      
:start
set /p pass= 进入CMD请输入密码:
if "%pass%" equ "123456" goto ok
echo 密码错误,请重新输入!
echo 你还有%times% 次机会

if %times%==0 goto err
echo 状态:用户输入密码 验证失败
set /A times=%times%-1
goto start

if "%pass%" neq "123456" goto err
:err
echo 密 码 错 误 !!
echo 未经授权擅自闯入者请自重。。。      
pause
exit
:ok
echo 密 码 正 确 !!
echo 欢迎使用CMD天悬星河美化版。。。      
title 天悬星河 http://www.candura.us
endlocal

  这里面大部分命令都是大家熟悉的,就不多介绍了,只要把那两个if语句中间双引号里面的部分改成自己密码就行了。说说这里面几个特殊的命令吧。

  title 命令:这个命令是用来修改CMD的窗口标题的,使用方法和 echo 一样,在title命令后面加上你想让标题栏显示的内容即可,我这里让它显示“天悬星河 http://www.candura.us ”。

  color 命令:这个是用来设置前景色和背景色的,在color后面通常加两个参数,第一个参数是背景色,第二个参数是文字的颜色。具体为: 0.黑色 1.蓝色 2.绿 3.湖蓝色 4.红 5.紫色 6.黄 7.白色 8.灰色 9.浅蓝色 A.浅绿色 B.浅水绿 C.浅红 D.浅紫色 E.浅黄色 F.亮白色。所以我这里面使用“color 0a”显示的效果就是黑色背景,绿色文字。

  doskey 命令:这个命令就是用来做映射的命令,我就是用它来实现让cmd支持少许Linux命令的。它的使用方法是:doskey 新命令=原命令。比如Linux下显示当前文件夹下内容是用“ls”命令,而在CMD下面是用“dir”,那么就设置成“doskey ls=dir”就行。用这个方法还可以自己设置自己喜欢的命令,只要不重复就行。

  prompt 命令:这个命令对于平常很少见,它是用来更改提示符显示的。CMD默认的命令提示符显示的是“路径+大于号”然后右边是用户输入的命令。用这个可以更改,像我这里就改成了“天悬星河+分隔符+路径+加大于号+空格”。详细使用方式及参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
PROMPT [text]
text 指定新的命令提示符。
提示符可以由普通字符及下列特定代码组成:
$A & (短 and 符号)
$B | (管道)
$C ( (左括弧)
$D 当前日期
$E Escape 码(ASCII 码 27)
$F ) (右括弧)
$G > (大于符号)
$H Backspace (擦除前一个字符)
$L < (小于符号)
$N 当前驱动器
$P 当前驱动器及路径
$Q = (等号)
$S (空格)
$T 当前时间
$V Windows 版本号
$_ 换行
$$ $ (货币符号)
如果命令扩展被启用,PROMPT 命令会支持下列格式化字符:
$+ 根据 PUSHD 目录堆栈的深度,零个或零个以上加号(+)字符,一个推的层一个字符。
$M 如果当前驱动器不是网络驱动器,显示跟当前驱动器号或空字符串有关联的远程名。

  利用这个命令可以更加深入的模仿Linux下面命令行的提示符显示方式,在做美化的时候很有用。

  接下来写好自己的cmd文件之后就可以复制到系统文件夹去了,一般复制到 X:\Windows\ 或者 X:\windows\system32\ (其中X为系统所在盘符)就可以了。然后,进入注册表(开始→运行→输入“regedit”后回车),找到“[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]”这个位置,新建一个“AutoRun”的字符串值,里面填写那个文件的完整路径就行,注意文件夹常用的“\”在这里要写成“\”,像我的就是“C:\WINDOWS\system32\candura.cmd”。

  做好这些之后再运行CMD看看,是不是截然一新了呢!为了方便修改,我自己写了几个批处理和注册表文件,方便进行安装和卸载,在我的博客有下载,大家要修改只要修改 candura.cmd 里面的内容保存,再运行“安装.bat”就可以自动复制并且导入注册表了,卸载的时候运行“卸载.bat”就行了。

文章目录
|