根据传递给它的参数修改 Doskey 宏如何将参数传递给命令

lag*_*lex 8 batch git-shell

我有一个非常简单的 doskey 宏

DOSKEY s="C:\Program Files (x86)\Git\bin\sh.exe" --login
Run Code Online (Sandbox Code Playgroud)

所以我可以从命令提示符切换到 git shell s

但有时我只想在 shell 中执行一个命令并返回到命令行。为此,我要么必须进入 shell,做一些事情,然后退出。或者我可以修改 doskey 宏

DOSKEY s="C:\Program Files (x86)\Git\bin\sh.exe" --login -c "$*"
Run Code Online (Sandbox Code Playgroud)

但这意味着我现在不能用它来做前者,即进入shell,它只是现在执行。

我想知道我是否可以根据我是否已经通过另一个参数来有条件地在两者之间进行选择。所以s会做前者,但s echo hello会做后者。

有没有办法做到这一点?

dbe*_*ham 10

您可以在宏定义中使用任何标准的 CMD.EXE 命令。IF 命令可以测试您是否至少传递了一个参数并相应地进行了分支。

doskey s=if $1. equ . ("C:\Program Files (x86)\Git\bin\sh.exe" --login) else "C:\Program Files (x86)\Git\bin\sh.exe" --login -c "$*"
Run Code Online (Sandbox Code Playgroud)

  • $* 将把's' 之后输入的所有内容放在要执行的命令上。 (2认同)