【问题标题】:How to define a DOSKEY alias for multiple commands?如何为多个命令定义一个 DOSKEY 别名?
【发布时间】:2018-05-10 11:17:31
【问题描述】:

this question的回答开始

对于 Windows 命令提示符,我可以如下定义别名:

@echo off
DOSKEY ns=npm start
DOSKEY nsr=npm run serve

我想定义一个别名来组合这两个命令。我尝试了以下方法:

@echo off
DOSKEY nss=npm start && npm run serve

当我尝试打开命令提示符时,窗口会打开,但不会出现> 提示符。

我认为包含&& 会导致问题。

【问题讨论】:

标签: windows command-line alias doskey


【解决方案1】:

DOSKEY 的命令分隔符是$T

你的例子:

DOSKEY nss=npm start $T npm run serve

【讨论】:

  • 感谢您的回答。我试过了,会出现> 提示。之后我遇到了另一个问题。如果第一个命令由于某种原因失败,那么第二个命令仍将执行。我选择了另一种方法,我将发布。
  • 添加另一个$T 形成&&,这将是最好的答案。
【解决方案2】:

我在超级用户上查看了answerquestion。以下方法解决了我的问题:

@echo off
DOSKEY nss=npm start ^&^& npm run serve

【讨论】:

  • 我希望你意识到这只是通过AddConsoleAlias 控制台中的替换规则。它在输入缓冲区中进行替换,在控制台客户端程序(例如 cmd.exe)甚至读取一行输入之前。这些别名仅在控制台中输入的行的开头起作用(即您不能通过管道传递给它们),而不是在批处理脚本中。对于doskey.exe,可以使用$T$T代替&&,比在命令行中使用^转义&操作符更加灵活。
  • 感谢您的信息。目前我不知道有任何需要管道到这些命令。
【解决方案3】:

尝试将其编写为批处理文件,然后使用 DOSKEY 命令调用该批处理文件

REM do_npm.bat
npm start
npm run serve

然后,运行 DOSKEY 命令

DOSKEY npm=do_npm.bat

看看这是否适合你

【讨论】:

  • 感谢您的回答。我选择了不同的方法,因为我想避免额外的文件。
【解决方案4】:

我的方法是从文本文件中加载宏:

a.bat:
    @doskey /macrofile=C:\%HOMEPATH%\bin\aliases.txt

在宏文件中,&& 有效:

aliases.txt:
    cl=cd /d $* && dir

然后,如果我从 HOMEPATH 键入“cl bin”,它会执行“cd /d bin”,然后是“dir”:

C:\Users\mike> cl bin
09/17/2020  09:27 AM             1,303 a.bat
09/30/2020  03:17 PM               886 aliases.txt

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2013-01-16
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多