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

15

此问题 的答案之后:

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

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

我想定义一个别名来合并这两个命令。我尝试了以下内容:

@echo off
DOSKEY nss=npm start && npm run serve
当我尝试打开命令提示符时,窗口会打开,但>提示符不会出现。 我认为包含&&是导致问题的原因。

请参阅 https://superuser.com/a/1349294/965349。 - ws_
4个回答

30

DOSKEY命令的分隔符是$T

以您的示例为例:

DOSKEY nss=npm start $T npm run serve

感谢您的回答。我尝试了这个方法,出现了>提示符。但之后我遇到了另一个问题。如果第一个命令由于某种原因失败,则第二个命令仍将执行。我选择了不同的方法,稍后会发布。 - gburnett
4
添加另一个 $T 以形成 &&,这将是最佳答案。 - Eryk Sun
DOSKEY nss=npm start $T$T npm run serve - 完美运行!来自微软文档,使用 $T 是首选方法。通过 Microsoft 学习 doskeys - Jenobi

18

4
希望你意识到这只是在控制台中通过 AddConsoleAlias 进行的替换规则。它在控制台客户端程序(例如cmd.exe)读取一行输入之前,就在输入缓冲区中进行替换。这些别名仅适用于在控制台中输入的行的开头(即无法使用管道符号),而不适用于批处理脚本。对于 doskey.exe,您可以使用 $T$T来代替 &&,这比在命令行中使用 ^ 转义 & 运算符更加灵活。 - Eryk Sun
感谢提供信息。目前我不知道需要将其导出到这些命令中。 - gburnett

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

2
尝试将其编写为批处理文件,然后使用DOSKEY命令调用该批处理文件。
REM do_npm.bat
npm start
npm run serve

接着运行DOSKEY命令

DOSKEY npm=do_npm.bat

看看这对你是否有效。

谢谢回答。不过我选择了另一种方法,因为我想避免使用额外的文件。 - gburnett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接