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.