Windows 添加命令别名的方法

6 minute

前言

下面将介绍 3 种方法:

  • CMD 添加别名的方法
  • PowerShell 添加别名的方法
  • 通过添加环境变量的方式设置别名

CMD 添加别名的方法

设置临时的别名

可以通过 doskey 命令实现。

1doskey ls=echo ====== ^&^& dir /b $* ^&^& echo ======

$* 表示还可能有其他命令参数,^&^& 用于分开多条命令。

单纯在一个 cmd 窗口中使用 doskey 设置别名,别名只能在该窗口中使用。

设置永久的别名

可以通过将 doskey 命令写入 bat 脚本,再把脚本路径添加到注册表 Autorun 实现永久且所有 cmd 都可用的别名,具体步骤如下:

编写脚本

1@echo off
2doskey ls=dir /b $*
3doskey lss=echo ====== ^&^& dir /b $* ^&^& echo ======

添加路径到注册表

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor 下的 Autorun 中,将数值设为 doskey 命令脚本所在的路径即可。这样所有用户都可以使用设置好的别名。

也可在 HKEY_CURRENT_USER 下的对应位置设置,只针对当前用户设置别名。

优缺点

通过 doskey 的方式,挺方便的,但是在命令非常多的情况下不是很方便,同时,设置的命令还不可以在 powershell 下运行。

PowerShell 添加别名的方法

为 PowerShell 设置临时的别名

1PS C:\Users\akyna> set-alias escc esc
2PS C:\Users\akyna> escc
3......

如果带参数,则可以通过 function 进行:

1PS C:\Users\akyna> function func{nircmd emptybin}
2PS C:\Users\akyna> set-alias ctrash func
3PS C:\Users\akyna> ctrash

这样的别名只是在当前会话下有效,开启另一个 shell 就失效了。

可以通过 export-alias my-alias.txt 导出当前会话下的 alias,在其他 shell 中,通过 import-alias my-alias.txt 即可使用。

删除 PwerShell 临时别名

1PS C:\Users\akyna> remove-item alias:escc
2PS C:\Users\akyna> escc
3escc: The term 'escc' is not recognized as a name of a cmdlet, function, script file, or executable program.
4...

为 PowerShell 设置永久的命令别名

首先打开 PowerShell ,运行 echo $profile,会输出一个 powershell 配置文件的路径,然后打开文件,按以下格式可以设置多条别名:

1function 别名 { 需要替代的命令可以包含空格 }

e.g.

一个升级 vscode 的命令:

 1# 升级vscode
 2function updatevs {
 3    taskkill /f /t /im code.exe
 4    move D:\a\VSCode* D:\a\vs.zip
 5    Bandizip.exe x -o:"D:\tools3\vscode\Microsoft VS Code" -aoa "D:\a\vs.zip"
 6    del D:\a\vs.zip
 7    code
 8    pause
 9}
10#其他别名
11...

以后,新的别名都可以继续添加在该文件中,非常方便。

最后,需要将 ExecutionPolicy 设为 RemoteSigned。

  • 以管理员身份打开 PowerShell,执行 Set-ExecutionPolicy RemoteSigned
  • 重新启动 PowerShell

优缺点

对于命令非常多的情况很方便,但是无法在 cmd 下运行别名。

下面介绍一种同时适用于 powershell 和 cmd 的方式。

通过添加环境变量的方式设置别名

操作方法

假如我想通过 exesc 这个命令运行一些操作命令:

  • 在路径 my_path 下新建 exesc.bat 文件,该文件包含了一系列操作命令;
  • 将 my_path 加入环境变量;
  • 命令行即可通过键入 exesc 命令执行 exesc.bat。

以后添加任何命令都可以在这个路径中新建 bat 文件编写别名,非常方便。

这样在 powershell 和 cmd 中都可以使用通过这个方法设置好的别名,但是注意,前提是这个脚本中的命令同时适用于 powershell 和 cmd,比如,如果该脚本中存在一个 ls 命令,但是 cmd 没有这个命令,那么cmd就无法使用该别名,但是你可以先通过上面介绍的 doskey 方法设置好 ls 别名,这样就可以愉快使用了。

优缺点

个人感觉是很不错的方法,但是一个别名对应一个文件,不是很方便,无法在一个文件中同时指定所有别名。

如果想实现通用性,必须兼顾 cmd 和 powershell 都存在的命令。如果想使用 powershell 很多特有的命令,那么实现通用性是比较麻烦的。

总结

如果你只使用 powershell,那么只使用上面第二种方法就好了,这是最舒服的方法。

如果你只是用 cmd,那么就考虑用 powershell吧,它可比 cmd 强大多啦,内置了许多 linux 命令别名以及一些强大的命令。如果实在不想换,那就用第一种老方法。

第三种方法,可以视情况而定使用。