it-swarm-eu.dev

Crea un alias in Windows XP

Tornando a scuola, avevo un file .login lungo le linee di

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

Mi piacerebbe fare questo genere di cose con il mio XP box qui al lavoro, ma la maggior parte delle risorse che ho trovato online sembrano abbastanza complicate e pesanti. C'è un modo per fare ciò che non coinvolge le mucking nel registro o l'esecuzione di un file batch di grandi dimensioni?

La mia ragione originale per chiedermelo è che ho bisogno solo della riga di comando per un comando in una cartella specifica, e volevo essere in grado di arrivare a quella cartella velocemente quando ho lanciato la riga di comando. Ma la risposta accettata per questa domanda è talmente buona che ho deciso di chiedere del mio problema originale come una domanda separata: Passa alla cartella di avvio predefinita per il comando Prompt di Windows .

54
Pops

Non molte persone sembrano saperlo, ma è possibile utilizzare lo strumento macro doskey, l'unico problema è che non viene salvato. Ci sono molti modi per ovviare a questo però.

utilizzo:

doskey ls=dir

ls ora farà una lista di directory proprio come farebbe dir.

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

doskey d=dir $*

Per quanto riguarda la soluzione alternativa per farli salvare:

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

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

Se si digita un a e premendo Enter sembra troppo lavoro, gettalo nello script AutoHotkey :

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

Caricamento alias automaticamente :

È possibile modificare tutte le scorciatoie in cmd in modo che puntino a %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd, sostituendo C:\path\to\aliases.cmd con il percorso del file 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 avvia il comando precedente (non consiglierei questo metodo in quanto molte app dipendono da cmd)
  • Ad esempio, crea uno script batch e chiamalo cmda (cmd con alias). Avvia il comando precedente e metti questo script batch da qualche parte nel tuo percorso.
84
John T

È un semplice come:

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

    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 quando viene avviato 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 (es. set_cmd_autorun.cmd ) che imposterà la chiave Autorun del Processore di Comando per 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 seguente 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"
38
user29888

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'autorun di cmd:

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

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

c 
:\winscripts\autoexec.bat [. .____]

ora ogni volta che si esegue "cmd" da Start-> Esegui prompt, questo autoexec.bat verrà eseguito e creerà automaticamente i macro doskey.

A proposito, whereis.cmd contiene questo:

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

che ricerca la variabile PATH per il termine che fornisci:

 c:> whereis javaw 
 c:\jdk\bin\javaw.exe
5
andematt

Puoi creare file .cmd e inserirli in qualche posto nel tuo% PATH% (come C:\Windows). Per utilizzare il tuo alias web come esempio:

@C:
@cd \inetpub\wwwroot

Farebbe qualcosa come:

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

Non sono a conoscenza di alcun modo per creare un file di stile flat in formato .aliases.

1
djhowell

un modo molto veloce e sporco per 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 i file autorun e/o le escursioni nel registro

1
hello_earth

Il modo in cui l'ho fatto è stato con un rapido script 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()

Chiedo scusa per il povero script, ma l'utilizzo è abbastanza bello, imo. Mettilo da qualche parte nel tuo percorso, aggiungi .py al tuo PATHEXT e aggiungi anche c:\alias al tuo PATH (o cambialo, qualunque cosa sia), quindi usa:

alias <command> <action>

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

alias -p <command or part of>

Per mostrare cosa è qualcosa.

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

edit: Questo ovviamente richiede python, scritto su v26 ma probabilmente funzionerà in qualcosa di recente. Come prima, scusa per la qualità :)

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

0
Phoshi