107 votes

Comment définir un alias dans la ligne de commande Windows ?

J'ai travaillé sur bash et j'ai beaucoup profité d'alias. Existe-t-il un moyen équivalent en ligne de commande Windows ?

Je ne veux pas simuler un environnement Linux, donc cygwin n'est pas un choix. J'ai juste besoin d'un raccourci pour une commande très longue, comme cd a_very_long_path .

101voto

dbenham Points 10555

Comme Christian.K l'a dit dans son commentaire, la commande DOSKEY peut être utilisée pour définir des macros, qui sont analogues à des alias.

doskey macroName=macroDefinition

Les paramètres de macro sont référencés dans la définition par l'intermédiaire de $ les positions préfixées : $1 par le biais de $9 y $* pour tous.

Voir le documentation technique de doskey ou le type doskey /? ou help doskey à partir de la ligne de commande pour plus d'informations.

Mais les macros DOSKEY présentent de sérieuses limitations :

  • Les macros ne fonctionnent que sur la ligne de commande interactive - elles ne fonctionnent pas dans un script batch.
  • Ils ne peuvent pas être utilisés de part et d'autre d'un tuyau : Les deux someMacro|findstr '^' y dir|someMacro échouer.
  • Ils ne peuvent pas être utilisés à l'intérieur d'une commande FOR /F : for /f %A in ('someMacro') do ... échoue

Les limitations sont si importantes que j'utilise rarement les macros DOSKEY.

Évidemment, vous pouvez créer des scripts par lots au lieu de macros, et vous assurer que les emplacements des scripts sont dans votre PATH. Mais alors vous devez préfixer chaque scripts avec CALL si vous voulez utiliser le scripts à l'intérieur d'un autre scripts.

Vous pourriez créer des "macros" variables simples pour les commandes longues et souvent utilisées, mais la syntaxe est un peu gênante à taper, car vous devez développer la "macro" lorsque vous voulez l'utiliser.

Définition :

set "cdMe=cd a_very_long_path"

Utilisation (depuis la ligne de commande ou script)

%cdMe%

28voto

Amit Tiwari Points 31

Vous pouvez faire un lot script et le sauvegarder dans votre chemin.

Sous Linux, vous feriez un script et l'ajouteriez au dossier ~/bin sous Windows, vous pouvez faire de même.

Ajouter %USERPROFILE%\bin à votre PATH variable d'environnement. Puis enregistrez vos scripts là-dedans.

quickcd.cmd

@echo off
cd /d a_very_long_path

Vous pouvez maintenant taper quickcd à la ligne de commande.

Il peut également être appelé à l'intérieur d'un script en utilisant la fonction call fonction

call quickcd

21voto

Books Points 613

subst

Si vous essayez vraiment de contourner quelque chose comme ça :

C:> cd \users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

Vous pouvez utiliser le subst pour affecter ce long chemin à une lettre de lecteur distincte.

subst m: c:\users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

Ensuite, quand vous voulez aller dans ce dossier, vous pouvez simplement taper m: à la ligne de commande.

L'avantage de ce système par rapport à doskey est qu'il fonctionne dans tous les programmes de traitement par lots et qu'il apparaît dans n'importe quelle boîte de dialogue de fichiers de Windows.

Si vous ne voulez plus de la cartographie :

subst m: /D

10voto

Javed Ahmed Points 121

Vous pourriez utiliser la même astuce, que celle utilisée par Windows : définir une variable d'environnement (ou simplement une variable dans un contexte batch) par exemple, il existe une variable d'environnement %windir% (et quelques autres) Vous pouvez donc faire un

cd C:\Windows\

o

cd %windir%

qui fait la même chose. Donc, tout ce que vous avez à faire, c'est :

set "mydir=C:\very\long\path\to\my\data\"

après cela, vous pouvez le faire (d'où que vous soyez) :

dir %mydir%

o

cd %mydir%

ou ce que vous voulez.

10voto

Contrairement à Linux, dans Windows les alias peuvent prendre des arguments, et on peut leur donner des paramètres dans lesquels affecter ces arguments dans leur définition.

La commande interne intégrée est doskey ce qui signifie qu'il ne s'agit pas d'un fichier exécutable externe situé dans le dossier de l'entreprise. %SystemRoot%\System32 mais est une caractéristique de cmd.exe qui est lui-même situé à %SystemRoot% ou %Windir% tous deux pointant vers C:\Windows par défaut.

Doskey définit les alias parmi de nombreuses autres choses. Dans la terminologie Windows, les alias sont appelés macros. Pour définir un alias, vous utilisez

doskey alias=command $1 $2 ... $9 or $* (to catch them all) 

Aquí $1 pointe vers le premier argument, et $* pointe vers tous les arguments.

J'ai toujours utilisé $* et guillemets $1 s'il n'y a qu'un seul argument pour omettre les espaces qui sont traités comme des caractères spéciaux, notamment comme des séparateurs (pour les commandes).

En outre, vous pouvez définir votre alias les macros dans un fichier séparé, par exemple LinuxAliases.macro et ensuite la source en utilisant

doskey /macrofile=LinuxAliases.macro

Il chargera tous les alias définis dans le fichier pour l'utilisateur actuel. session seulement, c'est-à-dire quand vous exit de cmd.exe (également connu sous le nom de Shell et Command Prompt), ils ont disparu.

Pour avoir des alias permanents, vous pouvez taper la commande complète quelque part dans une clé regedit appelée AutoRun ou AutoCommand ou quelque chose de similaire, ce dont je ne me souviens plus maintenant à côté de la syntaxe interne du fichier macro :P


Voici les officiel et même meilleur documentations pour la commande.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X