Alias ​​de commande dans l'invite de commande?


18

Comment puis-je créer des alias de commande dans l'invite de commandes de Windows comme je le ferais avec bash?

Je l'ai découvert doskeydans un fil de discussion , donc je peux faire quelque chose comme:

doskey ls=dir /b

... et maintenant la commande lsagit un peu plus comme lssur Unix. (Je tape lstellement souvent cmd, ce n'est même pas drôle.)

Mais comment puis-je faire en sorte que cela reste entre les sessions? Il disparaît la prochaine fois que j'ouvre cmd.exe. (Y a-t-il quelque chose comme ça .bash_profile?)


Désolé de le faire hors sujet, mais vous pouvez bénéficier de l'installation d'une copie de cygwin et avoir tous les outils Unix dans votre repose
bubu

Oui, j'aimerais bien, mais je ne pense pas que ce soit une option (et cela pourrait être plus de travail que ça vaut). Mes machines principales sont Linux et OS X - je teste actuellement certains programmes sur Windows.
Benjamin Oakes

1
il n'y a pas grand chose à faire. cygwin.com/setup.exe est tout ce dont vous avez besoin pour installer. il suffit de télécharger et de cliquer sur suivant. tout est là et très simple. il n'y a pas grand-chose à configurer non plus.
bubu

Hrm ... eh bien, je vais l'essayer. Mais la machine a déjà beaucoup de problèmes ...;)
Benjamin Oakes

4
sauf si votre MS-DOS est la version 6.22 ou moins, vous n'exécutez pas DOS. par votre mention de cmd.exe, je suppose que vous parlez du shell de commande de base WinNT / 2k / XP / etc.
Quack Quichote

Réponses:


0

cygwin peut être utilisé dans ce cas bien que ce ne soit pas exactement une réponse sur le sujet.

http://www.cygwin.com/
Téléchargement CygWin : http://cygwin.com/setup.exe

Pour y accéder facilement dans Windows, vous pouvez mettre c: \ cygwin \ bin dans votre chemin.

notez qu'il existe quelques commandes qui se heurtent à un logiciel Windows qui n'est pas équivalent, par exemple find (1) vs find.exe - find (1) répertorie tous les fichiers et sous-répertoires tandis que find.exe fonctionne comme grep.

une autre option consiste à accéder

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun ou HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

check-out

 cmd.exe /? 
pour plus de détails


Hrm ... il ne semble utiliser aucun de mes chemins Windows ... Je vais devoir jouer avec ça plus tard, je pense. (Je n'ai jamais utilisé cygwin sérieusement auparavant.) Merci pour votre aide jusqu'à présent.
Benjamin Oakes

l'ajout du chemin cygwin dans la variable d'environnement du chemin Windows vous permet d'utiliser les outils de l'environnement cygwin dans cmd.exe; il suffit de noter qu'il existe des mises en garde, par exemple des heurts de find.exe avec la commande find fournie par cygwin.
bubu

Pourquoi sous-estimer? Je n'en ai aucune idée.
bubu

34

Il est assez facile de configurer des alias permanents dans l'invite de commande Windows en utilisant la @DOSKEYcommande et l' HKCU\Software\Microsoft\Command Processoroption Autorun.

Guide rapide étape par étape:

  1. Créez un nouveau fichier de commandes, appelez-le Alias.bat. Copiez / collez le texte ci-dessous. CONSEIL: je recommande de créer un C:\Bindossier pour tous vos outils de ligne de commande.
  2. Ouvrez le registre HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
  3. Ajoutez une valeur de chaîne nommée Autorunet définissez la valeur sur le chemin absolu du Alias.batfichier.
  4. Terminé.

Ce fichier de commandes s'exécutera chaque fois que vous ouvrirez une invite de commandes.

Contenu d' Alias.bat

DOSKEY ls=DIR $* 
DOSKEY cp=COPY $* 
DOSKEY xcp=XCOPY $*
DOSKEY mv=MOVE $* 
DOSKEY clear=CLS
DOSKEY h=DOSKEY /HISTORY
DOSKEY alias=if ".$*." == ".." ( DOSKEY /MACROS ) else ( DOSKEY $* )

Vous pouvez maintenant taper alias(c. DOSKEY /MACROS-à- d. ) Pour afficher la liste actuelle des alias / macros.

Pour ajouter de nouveaux alias pour la session en cours, vous seul pouvez les utiliser alias name=command.


1
Simple, facile à mettre à jour une fois installé, j'aime beaucoup celui-ci!
Urda

Malheureusement, depuis, j'ai cessé d'utiliser ces alias, car la @DOSKEYcommande provoque un plantage lors de la fermeture d'Autodesk Maya 2010. Il y a probablement un problème, par exemple vérifier si le processus parent est Maya, mais je n'ai pas passé de temps à enquêter.
Dennis

9

Sorte aussi de hors-sujet -

Utilisez PowerShell au lieu de la cmd.exeligne de commande. La bonne nouvelle est que PowerShell a l'équivalent de .bash_profileet fonctionne comme la cmd.exeligne de commande. Il est livré avec une fonction de génération d'alias intégrée. La mauvaise nouvelle est qu'il y a un peu de courbe d'apprentissage si vous voulez faire quelque chose de plus compliqué que de simples cmd.execommandes.

Par ailleurs, lsest défini comme un alias de dir, dès la sortie de la boîte.


Pourquoi personne ne m'a jamais dit d'utiliser Power-Shell auparavant? C'est tellement mieux pour tant de choses.
Andres

3

Il existe une entrée de registre HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRunqui vous permet d'exécuter une commande lorsque vous démarrez une invite cmd. Cela comprend un fichier de commandes.


Vous souhaiterez peut-être pointer vers HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun car les autres n'auront pas le même ID utilisateur que vous.
bubu

@bubu: Oh, très vrai, désolé. J'ai trouvé qu'en cherchant dans mon registre, je ne pensais pas.
Phoshi

1

Je suggère d'installer les versions dos de ces commandes directement à partir de ce lien .

Simple, léger, efficace, etc. Je l'utilise depuis un moment maintenant, ça me fait plaisir! Cygwin est un peu gros pour l'essentiel dont j'ai besoin.


0

Essayez de les mettre dans autoexec.bat. Je ne suis pas sûr, vous devrez l'essayer. Mettez autoexec.bat lui-même dans C: \


Ça ne semble pas marcher ...
Benjamin Oakes


0

Je serai nécromancien un instant et ressusciterai ce fil d'entre les morts. Sa réponse n'était pas satisfaisante pour moi. Je savais qu'il y avait une meilleure façon. J'ai essayé de créer et d'inclure des fichiers de chauves-souris et d'essayer de comprendre comment faire fonctionner correctement la boule de spaghetti. Quoi qu'il en soit de retour à Google, je suis allé ..

J'ai trouvé cela aussi Comment ajouter de nouveaux alias / commandes DOS et créer un raccourci clavier pour un DOS administrateur Cela fonctionne très bien, cela devrait fonctionner sur 98-7 (système de numérotation un peu drôle mais bon c'est Windows). J'espère que cela aide ceux sur ce fil et ceux que Google envoie de cette façon.

Cette méthode n'est pas aussi simple que Alias, et doskey non plus. Une fois configuré, il s'agit du même effort.

J'ajouterai également que certaines parties de cette fusion avec la réponse de Dennis Williamson sont bien meilleures. Vous pouvez avoir des environnements shell pour plusieurs versions de la même application, par exemple php 4 pour vos anciens scripts et php 5 pour votre serveur de test.

Quoi qu'il en soit, cela a fonctionné beaucoup mieux pour moi.


0

Le résoudre en définissant un environnement PATH

créer un fichier ls.c

entrez le code suivant

int main()
{
system("dir /b");
return 0;
}

dans ls.c et compilez le fichier:

$gcc ls.c -o ls

un fichier exécutable ls.exe est créé

créer un répertoire, nommez-le comme cmdline_tools

$mkdir cmdline_tools

copiez ls.exe dans le répertoire

définir le chemin du répertoire dans l'environnement PATH [copier l'emplacement du répertoire et le coller dans le PATH]

C:/cmdline_tools

Ouvrez votre cmd.exe et tapez

$ ls

Cela fonctionne comme une commande dir. Vous pouvez aussi faire pour d'autres commandes de la même manière. Sinon, faites-le nous savoir.


0

CMD avec alias / fonctions de doskey et bashrc (de cygwin> bash), les barres obliques fonctionnent également en cmd (win7 en avant)

  1. Créer un raccourci vers cmd pour utiliser cmdrc.cmd

    cmd -a "/ k% HOME% \ cmdrc.cmd c: \"

2 C:> chat% HOME% / cmdrc.cmd

:: Override same named builtin windows commands
:: To override these aliases, prefix with '@', eg. @date will not use alias.
@doskey date=c:\cygwin\bin\date.exe $*
@doskey echo=c:\cygwin\bin\echo.exe $*
@doskey mkdir=c:\cygwin\bin\mkdir.exe $*
@doskey rmdir=c:\cygwin\bin\rmdir.exe $*
@doskey find=c:\cygwin\bin\find.exe $*
@doskey time=c:\somedir\time.exe $*

:: using a particular rsync with some options
@doskey rsync=c:\cygwin\bin\rsync.exe -e "ssh -F %HOME%/.ssh/config" $*   

@doskey cp='cp -vi %*'
@doskey ..=cd ..
@doskey ...=cd ../.. 

:: Or use bashrc (bash aliases, bash functions):

:: eg. In bashrc we have "alias cpvi='cp -vi'"

@doskey cpvi=bash -ic "set +u; cpvi $*"  

:: now cpvi is callable from cmd.

:: Install clink_x64 if you want readline editing in cmd
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.