在 Windows cmd 中创建永久 DOSKEY

nic*_*oum 27 windows bash alias command-line

我认为标题是不言自明的。

问题是如何在 Windows cmd 中创建一个别名,该别名在我关闭然后重新打开后也可以使用。例如,我想要一个别名ip来调用命令ipconfig或别名ls -l来调用Dir.

我的操作系统是 Windows 10,以防万一。

Jos*_*efZ 30

创建一个宏定义文件,例如在notepad; 随意命名并将其保存在任何地方(例如,在下一个示例中,我macros.doskeyd:\bat\文件夹中使用了文件名)。
或者,doskey /macros>d:\bat\macros.doskey命令将列出所有当前的宏定义d:\bat\macros.doskey文件中。
示例宏定义文件可能如下(请注意,==> 我的命令提示符由prompt $Q$Q$G$Scommand指定):

==> type d:\bat\macros.doskey
ls=dir /B $1 
ip=ipconfig $*
Run Code Online (Sandbox Code Playgroud)

然后,下一个命令应该完成这项工作:

==> reg add "HKCU\Software\Microsoft\Command Processor" /v Autorun /d "doskey /macrofile=\"d:\bat\macros.doskey\"" /f
The operation completed successfully.

==> reg query "HKCU\Software\Microsoft\Command Processor" /v Autorun

HKEY_CURRENT_USER\Software\Microsoft\Command Processor
    Autorun    REG_SZ    doskey /macrofile="d:\bat\macros.doskey"
Run Code Online (Sandbox Code Playgroud)

有关解释,请阅读cmd /?

如果/D未在命令行中指定,则在CMD.EXE 启动时,它会查找以下REG_SZ/REG_EXPAND_SZ注册表变量,如果其中一个或两个都存在,则首先执行它们。

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
Run Code Online (Sandbox Code Playgroud)

和/或

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
Run Code Online (Sandbox Code Playgroud)

免责声明:某些AutoRun设置可能会导致意外行为,例如隐藏的陷阱:命令处理器的自动运行设置

读取保存和恢复宏定义;您可以macros.cmd一步准备一个有效的脚本文件:

==> >macros.cmd (@for /F "delims=" %G in ('doskey /macros') do @echo DOSKEY %G)

==> type macros.cmd
DOSKEY ip=ipconfig $*
DOSKEY ls=dir /B $1

==>
Run Code Online (Sandbox Code Playgroud)

请记住,您不能从批处理文件运行 Doskey 宏


小智 22

  1. 创建一个文件来存储您的宏 (DOSKEY)。
    "C:\bat\macros.doskey"

    ls=dir $* $T
    up=cd.. $T
    ex=exit $T
    np=notepad
    
    Run Code Online (Sandbox Code Playgroud)
  2. 转到注册表编辑器。

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\
    
    Run Code Online (Sandbox Code Playgroud)
  3. 右键单击并添加一个新的“字符串值”子项。将其命名为自动运行。
    右键单击 -> 新建 -> 字符串值

  4. 右键单击它并修改值数据。
    右键单击 -> 修改 -> 数值数据 -> DOSKEY /MACROFILE="C:\bat\macros.doskey"
  5. 很高兴去。

† 请注意,该文件不必保存为 .doskey 文件。
† 另请注意,$T如果您要制作多个 DOSKEY,则需要令牌。

  • 显然,只有在单个 DOSKEY 宏中使用多个命令时才需要 `$T`。使用`$T` 来分隔命令,类似于在批处理文件中使用`&`。 (4认同)

小智 6

我就是这样做的,没有更新注册表。将“命令提示符”固定到任务栏,然后右键单击任务栏上的图标;从弹出窗口中选择“属性”。在“目标:”字段中输入以下内容:

%windir%\system32\cmd.exe /F:on /k doskey /macrofile=C:\cmds\macros.txt && Title CONSOLE
Run Code Online (Sandbox Code Playgroud)

然后创建C:\cmds\文件夹,打开命令提示符并设置所需的“doskey”宏:

doskey ip=ipconfig
doskey ls=dir /w
Run Code Online (Sandbox Code Playgroud)

最后,创建宏文件:

doskey /macros > C:\cmds\macros.txt
Run Code Online (Sandbox Code Playgroud)

这将更改任务栏中的“命令提示符”图标,以doskey在启动时使用宏文件进行调用。如果不需要宏,可以使用“开始”菜单中的“命令提示符”。