如何在 doskey 中使用 &&?

如何在 doskey 中使用 &&?

我知道我可以在命令行中连续运行两个命令:

git add -u && git commit --amend --no-edit

我也有使用设置别名doskey

doskey a=git add $*

但是如何才能将多个命令组合到一个doskey别名中呢?

doskey amend=git add -u && git commit --amend --no-edit

通过将设置doskey为第一个命令doskey amend=git add -u然后git commit --amend --no-edit在运行时立即执行而不是将复合命令保存到doskey别名,此操作会失败。

我也尝试引用整件事:

doskey amend="git add -u && git commit --amend --no-edit"

但这也失败了,因为它对引文进行了逐字解释:

'“git add -u && git commit --amend --no-edit”' 不被识别为内部或外部命令、可操作程序或批处理文件。

答案1

问题是&&表示命令的结束doskey,而第二条git命令在其后内联执行。

我尝试过其他语法组合,但是除了以下情况之外,没有一个允许在扩展&&后进行解析doskey

doskey amend=cmd /c "git add -u && git commit --amend --no-edit"

这会启动一个新的 shell,效率很低。更好的解决方案可能是将两个命令放入批处理文件(例如amend.cmd)并将宏分配给以下内容:

doskey amend=amend.cmd

答案2

这是谷歌的第一个结果,但我发现其他类似的问题有很好的答案。

1- 转义 & 符号doskey foo=bar ^& baz

2-使用 doskey 自己的命令分隔符doskey foo=bar $T baz

来源

这更干净,并且不会打开额外的命令窗口。

答案3

您可以在单个 DOSKEY 中链接命令,如 Ali 所提到的那样使用$T^&分隔符,但是您无法在终端中链接 doskey 命令。以下是一个例子

这有效

doskey ls=dir $T echo YAY A FOLDER

查看输出:

C:\tmp>ls
 Volume in drive C has no label.
 Volume Serial Number is ABCD-1234

 Directory of C:\tmp

23/07/2020  18:02    <DIR>          .
23/07/2020  18:02    <DIR>          ..
C:\tmp>YAY A FOLDER
C:\tmp>

这不

C:\tmp>ls && echo YAY ANOTHER ECHO!!
 Volume in drive C has no label.
 Volume Serial Number is ABCD-1234

 Directory of C:\tmp

23/07/2020  18:02    <DIR>          .
23/07/2020  18:02    <DIR>          ..
C:\tmp>YAY A FOLDER
C:\tmp>

没有YAY ANOTHER ECHO!!

更好的解决方案

使用文件夹中的批处理文件并设置 PATH

  1. 放入dir && echo YAY A FOLDER文件C:\batch\ls.bat
  2. path=%PATH%;C:\batch
  3. 跑步ls && echo YAY ANOTHER ECHO!!
  4. 欣赏可爱的输出

_

C:\tmp>ls && echo YAY ANOTHER ECHO!!
 Volume in drive C has no label.
 Volume Serial Number is ABCD-1234

 Directory of C:\tmp

23/07/2020  18:02    <DIR>          .
23/07/2020  18:02    <DIR>          ..
YAY A FOLDER
YAY ANOTHER ECHO!!

C:\tmp>

附言- 对于上述第 2 步,最好永久设置 PATH 环境变量。

答案4

使用 ^ 转义 & 字符,如下所示:

DOSKEY amend=git add -u ^&^& git commit --amend --no-edit

看: https://stackoverflow.com/a/47528395/2047385

相关内容