web-dev-qa-db-fra.com

Créer un alias dans Windows XP

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 ma XP ici au travail, mais la plupart des ressources que j'ai trouvées en ligne semblent assez compliquées et dures. Y a-t-il un moyen de faire cela sans impliquer de fouiller dans le registre ou exécuter un fichier de commandes 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 pour 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 la commande Windows Invite .

54
Pops

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

usage:

doskey ls=dir

ls va maintenant faire une liste de répertoires exactement comme le ferait dir.

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 enregistrer:

  • 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 comme suit: a.cmd . Ainsi, lorsque vous ouvrez cmd, vous pouvez taper a pour charger vos alias.

Si vous tapez un a et en appuyant Enter semble trop de travail, jetez ceci dans votre AutoHotkey script:

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

Chargement automatique des alias :

Vous pouvez modifier tous les raccourcis en cmd pour qu'ils pointent vers %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd, en remplaçant C:\path\to\aliases.cmd par 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 de nombreuses 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.
84
John T

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 batch (par exemple set_cmd_autorun.cmd ) qui définira la clé du processeur de commande Autorun 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 par 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"
38
user29888

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 = répertoire/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\Logiciel\Microsoft\Processeur de commandes\AutoRun 
 Et/ou 
 HKEY_CURRENT_USER\Logiciel\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
5
andematt

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 plat .aliases.

1
djhowell

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 now npp peut être utilisée à partir de n’importe quel shell cmd, sans fichiers autorun et/ou excursions dans le registre

1
hello_earth

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 leur utilisation est plutôt 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 puisse être beaucoup plus propre.

0
Phoshi