Créer un alias dans Windows XP

54

De retour à l’école, j’avais un fichier .login dans le sens de

alias ll = ls -l  
alias dir = ls -Fhl  
alias web = cd ~/public/public_www/development  

J'aimerais faire ce genre de chose avec mon XP Box ici au travail, mais la plupart des ressources que j'ai trouvées en ligne semblent assez compliquées et lourdes. Y a-t-il un moyen de faire cela sans impliquer de fouiller dans le registre ou exécuter un fichier batch volumineux?

À l'origine, je posais cette question parce que je n'avais besoin que de la ligne de commande pour une commande dans un dossier spécifique, et je voulais pouvoir accéder à ce dossier rapidement lorsque j'ai lancé la ligne de commande. Mais la réponse acceptée à cette question est tellement bonne que j'ai décidé de poser la question distincte à propos de mon problème initial: Changer de dossier de démarrage par défaut pour l'invite de commande Windows .

Pops
la source
Une option rapide et sale consiste simplement à ajouter le dossier à la PATHvariable. Cliquez avec le bouton droit sur Poste de travail , choisissez Propriétés , accédez à Avancé , puis Variables d'environnement . Plus d'infos: stackoverflow.com/a/20773224/722036
aexl

Réponses:

84

Peu de gens semblent le savoir, mais vous pouvez utiliser l' doskeyoutil de macro intégré, le seul problème est qu'il ne sauve pas. Cependant, il existe de nombreuses façons de contourner ce problème.

usage:

doskey ls=dir

lsva maintenant faire une liste de répertoires comme le dirferait.

Si vous souhaitez utiliser des arguments avec les commandes, utilisez cette syntaxe:

doskey d=dir $*

En ce qui concerne la solution de contournement pour les sauver:

  • enregistrez tous les alias dans un fichier au format suivant:
doskey ls = dir
doskey .. = cd ..

et placez-le dans l'un des répertoires de votre chemin. Nommez-le en abrégé a.cmd . Ainsi, lorsque vous ouvrez cmd, vous pouvez taper a pour charger vos alias.

Si vous avez trop de travail à saisir aet à presser Enter, ajoutez ceci à votre script AutoHotkey :

WinWaitActive, C:\WINDOWS\system32\cmd.exe
Send {a}{Enter}

Chargement automatique des alias :

Vous pouvez modifier tous les raccourcis vers cmd en les %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmdremplaçant C:\path\to\aliases.cmdpar l'emplacement de votre fichier d'alias. Si vous l'exécutez généralement à partir de la boîte d'exécution, vous pouvez:

  • Renommez l'exécutable cmd en cmd2.exe par exemple, et remplacez-le par un script ou un autre exécutable qui lance la commande ci-dessus (je ne recommanderais pas vraiment cette méthode car beaucoup d'applications dépendent de cmd)
  • Créez un script batch et appelez-le cmda (cmd avec alias) par exemple. Demandez-lui de lancer la commande ci-dessus et de placer ce script de commandes quelque part dans votre chemin.
John T
la source
1
+1 NICE !!! Je n'ai pas vu (ou ne me souviens pas) de Doskey depuis des années! ... (jouant la chanson des souvenirs dans ma tête!)
William Hilsum
19
Pas besoin d'un script AutoHotkey ici. Windows offre un moyen d' exécuter automatiquement un fichier de commandes à chaque lancement de cmd.exe: technet.microsoft.com/en-us/library/cc779439(WS.10).aspx Je le configure pour qu'il pointe vers c: \ dev \ autorun.bat qui charge les macros doskey et exécute d’autres utilitaires pratiques.
Dan Fabulich
Je suis vraiment surpris que personne n'ait suggéré à PowerShell que ce soit vraiment bon.
Eddie B
Est-ce que les macros définies fonctionnent à partir de la zone Win + R (Run) ???
ZEE
38

C'est simple comme:

  1. Créez un fichier avec des alias, par exemple c: \ bin \ aliases :

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. Créez un fichier avec tout ce que vous voulez exécuter au démarrage de cmd.exe, y compris le chargement des alias avec doskey, par exemple c: \ bin \ cmd_autoruns.cmd :

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. Créez et exécutez une fois un fichier de commandes (par exemple, set_cmd_autorun.cmd ) qui définira la Autorunclé du processeur de commandes sur notre cmd_autoruns.cmd :

    reg add "hkcu\software\microsoft\command processor" /v Autorun /t reg_sz /d c:\bin\cmd_autoruns.cmd
    

Au lieu de set_cmd_autorun.cmd, il est également possible de créer un fichier .reg comme celui ci-dessous, puis de le fusionner en un double-clic:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"CompletionChar"=dword:00000009
"DefaultColor"=dword:00000000
"EnableExtensions"=dword:00000001
"PathCompletionChar"=dword:00000009
"Autorun"="c:\\bin\\cmd_autoruns.cmd"
utilisateur29888
la source
'couleur OA' devrait probablement être 'couleur 0A'.
csnullptr
1
Vous avez seulement besoin de la "Autorun"="..."ligne sous la [HKEY_...]ligne, à moins que vous ne vouliez aussi définir explicitement les autres clés.
c24w
5

Ma réponse est similaire à celle de Vriolk

J'ai créé un fichier .bat contenant mes macros (par exemple, c: \ winscripts \ autoexec.bat):

@doskey whereis = c: \ winscripts \ whereis.cmd $ *
@doskey ls = dir / b $ *
@doskey l = répertoire / od / p / q / tw $ *

puis à partir d'une invite de commande, exécutez "cmd /?" pour trouver la clé de registre à modifier pour le lancement automatique de cmd:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun
  et / ou
HKEY_CURRENT_USER \ Software \ Microsoft \ Processeur de commandes \ AutoRun

À l'aide de regedit, ajoutez le chemin d'accès de votre fichier de commandes de macros à la valeur d'exécution automatique (ajoutez la clé d'exécution automatique si elle n'est pas présente):

c: \ winscripts \ autoexec.bat

maintenant, chaque fois que vous exécutez "cmd" à partir de l'invite Démarrer-> Exécuter, ce fichier autoexec.bat sera également exécuté et créera les macros doskey.

À propos, whereis.cmd contient ceci:

@for %% e dans (% PATHEXT%) do @for %% i dans (% 1 %% e) do @if PAS "%% ~ $ PATH: i" == "" echo %% ~ $ PATH: i

qui recherche dans votre variable PATH le terme que vous fournissez:

c:> où est javaw
c: \ jdk \ bin \ javaw.exe
Andematt
la source
BTW au lieu de whereispirater, vous pouvez utiliser wherece qui est une commande
intégrée
1

Vous pouvez créer des fichiers .cmd et les placer quelque part dans votre% PATH% (tel que C: \ Windows). Pour utiliser votre alias Web à titre d'exemple:

@C:
@cd \inetpub\wwwroot

Ferait quelque chose comme:

M:\> web
C:\inetpub\wwwroot>

Je ne connais aucun moyen de créer un fichier de style .aliases plat.

djhowell
la source
1

un moyen très rapide et sale d’avoir un raccourci prêt, qui ne nécessite pas beaucoup de problèmes, est de créer un fichier de commandes portant le nom de l’alias, dans l’un des répertoires faisant partie de la variable d’environnement PATH. Par exemple, je voulais appeler Notepad ++ via un alias. J'ai donc créé npp.bat dans C: \ WINDOWS contenant les éléments suivants:

"c:\Program Files\Notepad++\notepad++.exe" %1 %2 %3 %4 %5

La commande maintenant npp peut être utilisée à partir de n’importe quel shell cmd, sans fichiers autorun et / ou excursions dans le registre

hello_earth
la source
0

Comme je l’ai fait avec un script python rapide:

import sys
import string
import os
import glob

def listAll():
        for infile in glob.glob("c:\\aliases\\*.bat"):
            fileName = infile
            fileName = fileName[len("c:\\aliases\\"):len(fileName)-4]
            fileContents = open("c:\\aliases\\" + fileName + ".bat", "r")
            fileContents.readline()
            fileContentString=fileContents.readline()
            fileName += " is aliased to "
            fileName += fileContentString[0:len(fileContentString)-3]
            print fileName

def listSome(which):
        for infile in glob.glob("c:\\aliases\\*.bat"):
            fileName = infile
            fileName = fileName[len("c:\\aliases\\"):len(fileName)-4]
            fileContents = open("c:\\aliases\\" + fileName + ".bat", "r")
            fileContents.readline()
            fileContentString=fileContents.readline()
            if fileName.find(which)==0:
                fileName += " is aliased to "
                fileName += fileContentString[0:len(fileContentString)-3]
                print fileName

if len(sys.argv)>1:
    if sys.argv[1]!="-p":
        file = open("c:\\aliases\\"+sys.argv[1]+".bat", "w")
        file.write("@ECHO OFF\n")
        counter=0
        totalInput=""
        counter=0
        for arg in sys.argv:
            if counter > 1:
                totalInput+= arg + " "
            counter+=1

        if totalInput.find(".exe")!=-1:
            file.write("\"")

        counter=0

        for arg in sys.argv:
            if counter > 1:
                file.write(arg)
                if sys.argv[1]==sys.argv[2]:
                    if counter==2:
                        file.write(".exe")
                temparg=str(arg)
                if temparg.find(".exe")!=-1:
                    file.write("\"")
                file.write(" ")
            counter+=1
        file.write("%*")

        print "Aliased " + sys.argv[1] + " to " + totalInput
    else:
        if len(sys.argv)>2:
            listSome(sys.argv[2])
        else:
            listAll()
else:
    listAll()

Toutes mes excuses pour les scripts médiocres, mais l'utilisation est assez agréable, imo. Placez-le quelque part dans votre chemin, ajoutez .py à votre PATHEXT et ajoutez également c: \ aliases à votre PATH (ou modifiez-le comme bon vous semble), puis utilisez:

alias <command> <action>

alias (oui, non =, bien qu'il ne soit pas difficile d'ajouter un .split dans celui-ci), et:

alias -p <command or part of>

Pour afficher ce que quelque chose est.

Hackish, mais bêtement utile. Il existe un script équivalent à unalias, mais je suis sûr que vous pouvez le résoudre.

edit: Cela nécessite évidemment python, écrit sur v26 mais fonctionnera probablement dans tout ce qui est récent. Comme auparavant, désolé pour la qualité :)

edit2: En fait, quelque chose comme ceci, mais ajouter à la substance doskey serait mieux. Vous pouvez également ajouter des commandes de démarrage à cmd à l'aide de la clé de registre autorun, de sorte que cette opération soit beaucoup plus propre.

Phoshi
la source
1
Belle solution, mais un peu exagérée pour mes besoins.
Pops
En effet, ça l'est. J'aime juste avoir le contrôle de la façon dont mes affaires fonctionnent, c'est tout: P
Phoshi