Modifier la manière dont la macro Doskey transmet les arguments à la commande en fonction des arguments qui lui ont été transmis


5

J'ai une macro extrêmement simple

DOSKEY s="C:\Program Files (x86)\Git\bin\sh.exe" --login

Je pourrais donc passer d'invite de commande à git shell en s

Mais parfois, je veux seulement exécuter une seule commande dans un shell et revenir à la ligne de commande. Pour cela je dois soit entrer dans shell, faire des choses, sortir. Ou je pourrais modifier la macro doskey

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

Mais cela voudrait dire que je ne peux pas l'utiliser pour faire le premier, c'est-à-dire entrer dans shell, c'est pour exécuter seulement maintenant.

Je me demandais si je pouvais le faire conditionnellement choisir entre les deux en fonction du fait que je l'ais passé ou non d'un autre argument. Ainsi sferait le premier, mais s echo helloferait le dernier.

Y a-t-il un moyen de faire cela?

Réponses:


7

Vous pouvez utiliser n'importe quelle commande CMD.EXE standard dans votre définition de macro. La commande IF peut tester si au moins un paramètre a été passé et branchée en conséquence.

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 "$*"

1
Ajoutez une brève explication du fonctionnement de cette commande.
Nifle

1
$ * mettra tout ce qui est entré après 's' sur la commande à exécuter.
Alfergon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.