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?

Réponses:



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.

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!


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.

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.