如何为多个命令定义DOSKEY别名?

gbu*_*ett 3 windows command-line alias doskey

在回答这个问题之后

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

@echo off
DOSKEY ns=npm start
DOSKEY nsr=npm run serve
Run Code Online (Sandbox Code Playgroud)

我想定义一个别名,它将结合这两个命令。我尝试了以下方法:

@echo off
DOSKEY nss=npm start && npm run serve
Run Code Online (Sandbox Code Playgroud)

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

我认为将包含在内&&会引起问题。

gbu*_*ett 10

我看了一个关于超级用户的问题答案。以下方法解决了我的问题:

@echo off
DOSKEY nss=npm start ^&^& npm run serve
Run Code Online (Sandbox Code Playgroud)

  • 我希望您通过 [`AddConsoleAlias`](https://docs.microsoft.com/en-us/windows/console/addconsolealias) 意识到这只是控制台中的替换规则。在控制台客户端程序(例如 cmd.exe)甚至读取一行输入之前,它会在输入缓冲区中进行替换。这些别名仅在控制台中输入的行的开头起作用(即您不能通过管道连接到它们),而不在批处理脚本中起作用。对于doskey.exe,您可以使用`$T$T` 代替`&&`,这比在命令行中使用`^` 转义`&` 操作符更灵活。 (3认同)

Ayr*_*yrA 6

DOSKEY的命令分隔符是 $T

例如:

DOSKEY nss=npm start $T npm run serve
Run Code Online (Sandbox Code Playgroud)

  • 添加另一个 `$T` 以形成 `&&`,这将是最佳答案。 (4认同)