Crea un alias in Windows XP


54

A scuola, avevo un file .login sulla falsariga di

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

Mi piacerebbe fare questo genere di cose con la mia scatola XP qui al lavoro, ma la maggior parte delle risorse che ho trovato online sembrano piuttosto complicate e pesanti. Esiste un modo per farlo che non comporta confusione nel registro o esecuzione di un file batch di grandi dimensioni?

Il mio motivo originale per chiedermelo era che avevo solo bisogno della riga di comando per un comando in una cartella specifica e volevo essere in grado di accedere rapidamente a quella cartella quando ho lanciato la riga di comando. Ma la risposta accettata per questa domanda è così buona che ho deciso di porre il mio problema originale come domanda separata: passare alla cartella di avvio predefinita per il prompt dei comandi di Windows .


Un'opzione veloce e sporca è semplicemente aggiungere la cartella alla PATHvariabile. Fai clic con il pulsante destro del mouse su Risorse del computer , scegli Proprietà , vai su Avanzate , quindi su Variabili d'ambiente . Maggiori informazioni: stackoverflow.com/a/20773224/722036
aexl

Risposte:


84

Non molte persone sembrano conoscerlo, ma è possibile utilizzare lo doskeystrumento macro incorporato, l'unico problema è che non salva. Ci sono molti modi per aggirare questo però.

utilizzo:

doskey ls=dir

lsora farà un elenco di directory proprio come dirfarebbe.

Se si desidera utilizzare gli argomenti con i comandi, utilizzare questa sintassi:

doskey d=dir $*

Per quanto riguarda la soluzione alternativa per salvarli:

  • salva tutti gli alias in un file in questo formato:
doskey ls = dir
doskey .. = cd ..

e posizionalo in una delle directory sul tuo percorso. Dagli un nome breve come a.cmd , quindi quando apri cmd puoi digitare a per caricare i tuoi alias.

Se digitare ae premere Entersembra troppo, buttalo nello script AutoHotkey :

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

Caricamento automatico degli alias :

È possibile modificare tutte le scorciatoie in cmd a cui puntare %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd, sostituendole C:\path\to\aliases.cmdcon la posizione del file degli alias. Se in genere lo si esegue dalla casella Esegui, è possibile:

  • Rinominare l'eseguibile cmd in cmd2.exe, ad esempio, e sostituirlo con uno script o un altro eseguibile che avvii il comando sopra (non consiglierei davvero questo metodo poiché molte app dipendono da cmd)
  • Crea uno script batch e chiamalo cmda (cmd con alias) per esempio. Avvialo con il comando sopra e metti questo script batch da qualche parte nel tuo percorso.

1
+1 PIACEVOLE !!! Non ho visto (o ricordato) Doskey per anni! ... (Suonando la canzone dei ricordi nella mia testa!)
William Hilsum,

19
Non c'è bisogno di uno script AutoHotkey qui. Windows fornisce un modo per eseguire automaticamente un file batch ogni volta che si avvia cmd.exe: technet.microsoft.com/en-us/library/cc779439(WS.10).aspx Lo configuro per puntare a c: \ dev \ autorun.bat che carica macro doskey ed esegue altre utili utilità.
Dan Fabulich,

Sono davvero sorpreso che nessuno abbia suggerito che PowerShell sia dannatamente buono.
Eddie B,

Le macro definite funzionano dalla casella Win + R (Esegui) ???
ZEE,

38

È semplice come:

  1. Crea un file con alias, ad esempio c: \ bin \ aliases :

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. Crea un file con tutte le cose che vuoi eseguire all'avvio di cmd.exe, incluso il caricamento degli alias con doskey, ad es. C: \ bin \ cmd_autoruns.cmd :

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. Crea ed esegui una volta un file batch (ad esempio set_cmd_autorun.cmd ) che imposterà la Autorunchiave del processore di comando sul nostro cmd_autoruns.cmd :

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

In alternativa a set_cmd_autorun.cmd è anche possibile creare un file .reg come quello qui sotto e quindi unirlo con un doppio 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"

'color OA' dovrebbe probabilmente essere 'color 0A'.
csnullptr,

1
Hai solo bisogno della "Autorun"="..."linea sotto la [HKEY_...]linea, a meno che tu non voglia impostare esplicitamente anche le altre chiavi.
24

5

La mia risposta è simile a quella di Vriolk

Ho creato un file .bat che conteneva le mie macro (ad esempio c: \ winscripts \ autoexec.bat):

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

e poi da un prompt cmd è stato eseguito "cmd /?" per trovare la chiave di registro da modificare per l'esecuzione automatica cmd:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun
  e / o
HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

usando regedit, aggiungi il percorso del tuo file batch macro al valore AutoRun (aggiungi la chiave AutoRun se non è presente):

c: \ winscripts \ autoexec.bat

ora ogni volta che esegui "cmd" dal prompt Start-> Esegui, questo autoexec.bat eseguirà e creerà anche le macro doskey per te.

A proposito, whereis.cmd contiene questo:

@per %% e in (% PATHEXT%) do @for %% i in (% 1 %% e) do @if NOT "%% ~ $ PATH: i" == "" echo %% ~ $ PATH: i

che cerca nella variabile PATH il termine fornito:

c:> dov'è javaw
c: \ jdk \ bin \ javaw.exe

A proposito invece di whereishack, puoi usare il wherecomando incorporato
Dheeraj Bhaskar,

1

Puoi creare file .cmd e posizionarli in un punto nel tuo% PATH% (come C: \ Windows). Per usare il tuo alias web come esempio:

@C:
@cd \inetpub\wwwroot

Farebbe qualcosa del tipo:

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

Non sono a conoscenza di alcun modo per creare un file di stile .alias piatto.


1

un modo molto rapido e sporco di avere un collegamento pronto, che non richiede molta confusione - è quello di creare un file batch chiamato dopo l'alias, in una delle directory che fanno parte della variabile d'ambiente PATH. Ad esempio, volevo invocare Notepad ++ tramite un alias, quindi ho creato npp.bat in C: \ WINDOWS che conteneva quanto segue:

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

ora il comando npp può essere utilizzato da qualsiasi shell cmd, senza file di esecuzione automatica e / o escursioni nel registro


0

Il modo in cui l'ho fatto è stato con un veloce script in Python:

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()

Ci scusiamo per il povero scripting, ma l'uso è abbastanza bello, imo. Posizionalo da qualche parte nel tuo percorso, aggiungi .py al tuo PATHEXT e aggiungi anche c: \ aliases al tuo PATH (o cambialo, qualunque sia il seme), quindi usa:

alias <command> <action>

alias (Sì, no =, anche se non sarebbe difficile aggiungere un .split lì dentro) e:

alias -p <command or part of>

Per visualizzare cos'è qualcosa.

Hackish, ma stupidamente utile. C'è uno script unalias equivalente, ma sono sicuro che puoi risolverlo.

modifica: Questo ovviamente richiede Python, scritto su v26 ma probabilmente funzionerà con qualcosa di recente. Come prima, scusate per la qualità :)

edit2: In realtà, qualcosa del genere, ma da aggiungere alla roba doskey sarebbe meglio. Puoi aggiungere comandi di avvio a cmd anche con la chiave di registro di avvio automatico, in modo che possa essere molto più pulito.


1
Bella soluzione, anche se un po 'eccessiva per le mie esigenze.
apre dal

Certo che lo è. Mi piace avere il controllo su come funzionano le mie cose, è tutto: P
Phoshi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.