Doskey pour la commande composée

32

Doskey fonctionne dans les versions modernes de Windows pour définir des alias pour des commandes uniques, par exemple doskey foo=bar.

Il y a un léger problème à essayer de l'utiliser pour des commandes composées comme doskey foo=bar & bazcela est interprété comme (doskey foo=bar) & baz. La solution évidente serait d'ajouter des parenthèses explicites, doskey foo=(bar & baz)mais pour une raison quelconque, cela ne fonctionne pas, et doskey foo="bar & baz"ne fonctionne pas non plus.

Y a-t-il une manière de faire ça?

rwallace
la source

Réponses:

39

Échappez à l'esperluette.

foo=bar ^& baz
En pause jusqu'à nouvel ordre.
la source
19

Utilisez $Tpour séparer les commandes:

doskey foo = bar $ T baz
doskey cpdel = copie $ 1 $ 2 $ T del $ 1

de doskey /?:

$ T Séparateur de commandes. Permet plusieurs commandes dans une macro.
John T
la source
7

Pour (un peu) ajouter à la réponse de Dennis Williamson , vous pouvez également échapper au caractère pipe afin de diriger les commandes! Par exemple, je voulais une commande qui copie des trucs dans le presse-papiers. En raison de la façon COPYdont vous l'interpréterez, vous devez effectuer une commande à la recherche maladroite pour qu'il copie réellement le texte que vous spécifiez sans qu'il soit suivi d'une nouvelle ligne.

Afin de définir une macro à copier dans le presse-papiers, vous pouvez échapper le tuyau avec ^:

doskey cc=echo^|set /p=$*^|clip

Lors de l'exécution de la commande cc hey, vous aurez maintenant heycopié dans le presse-papiers!

CoolOppo
la source
Je me demandais également comment empêcher la copie du caractère de nouvelle ligne! Merci.
Alex Vallejo
7

pour ajouter aux réponses précédentes, vous pouvez également faire ceci:

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

    foo = bar & baz
    cpdel = copie $ 1 $ 2 $ T del $ 1
    cc = echo | set / p = $ * | clip

notez que dans le macrofichier, il n'est pas nécessaire d'échapper le tube / esperluette et vous pouvez définir plusieurs alias en un seul appel.

spiritpyre
la source