如何在 doskey 中使用 && ?

Jef*_*ett 3 windows command-line cmd.exe

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

git add -u && git commit --amend --no-edit
Run Code Online (Sandbox Code Playgroud)

我也使用别名设置 doskey

doskey a=git add $*
Run Code Online (Sandbox Code Playgroud)

但是如何在一个doskey别名中组合多个命令呢?

doskey amend=git add -u && git commit --amend --no-edit
Run Code Online (Sandbox Code Playgroud)

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

我也尝试引用整件事:

doskey amend="git add -u && git commit --amend --no-edit"
Run Code Online (Sandbox Code Playgroud)

但这也失败了,因为它从字面上解释了引号:

'"git add -u && git commit --amend --no-edit"' 不是内部或外部命令,也不是可运行的程序或批处理文件。

小智 10

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

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

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

来源

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

  • 这是正确答案,当前选择正确的答案有多个问题。 (2认同)

AFH*_*AFH 2

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

我尝试过其他语法组合,但它们都不允许在扩展&&后进行解析doskey,除了:

doskey amend=cmd /c "git add -u && git commit --amend --no-edit"
Run Code Online (Sandbox Code Playgroud)

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

doskey amend=amend.cmd
Run Code Online (Sandbox Code Playgroud)