Crear un alias en Windows XP


54

De vuelta en la escuela, solía tener un archivo .login en la línea de

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

Me gustaría hacer ese tipo de cosas con mi XP box aquí en el trabajo, pero la mayoría de los recursos que he encontrado en línea parecen bastante complicados y pesados. ¿Hay alguna manera de hacer esto que no implique hurgar en el registro o ejecutar un gran archivo por lotes?

Mi razón original para preguntar esto era que solo necesitaba la línea de comando para un comando en una carpeta específica, y quería poder llegar a esa carpeta rápidamente cuando inicié la línea de comando. Pero la respuesta aceptada para esta pregunta es tan buena que decidí preguntar sobre mi problema original como una pregunta separada: Cambiar a la carpeta de inicio predeterminada para el símbolo del sistema de Windows .


Una opción rápida y sucia es simplemente agregar la carpeta a la PATHvariable. Haga clic con el botón derecho en Mi PC , elija Propiedades , vaya a Avanzado y luego a Variables de entorno . Más información: stackoverflow.com/a/20773224/722036
aexl

Respuestas:


84

No mucha gente parece saberlo, pero puede usar la doskeyherramienta de macro incorporada, el único problema es que no se guarda. Sin embargo, hay muchas maneras de solucionar esto.

uso:

doskey ls=dir

lsahora hará una lista de directorio como lo dirharía.

Si desea usar argumentos con los comandos, use esta sintaxis:

doskey d=dir $*

En cuanto a la solución para hacerlos ahorrar:

  • guarde todos los alias en un archivo en este formato:
doskey ls = dir
doskey .. = cd ..

y colóquelo en uno de los directorios en su ruta. Póngale un nombre corto como a.cmd , de modo que cuando abra cmd puede escribir a para cargar sus alias.

Si escribir ay presionar Enterparece demasiado trabajo, tíralo en tu secuencia de comandos AutoHotkey :

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

Cargando alias automáticamente :

Puede cambiar todos los accesos directos a cmd para señalar %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd, reemplazando C:\path\to\aliases.cmdcon la ubicación de su archivo de alias. Si normalmente lo ejecuta desde el cuadro de ejecución, puede:

  • Cambie el nombre del cmd ejecutable a cmd2.exe, por ejemplo, y reemplácelo con un script u otro ejecutable que ejecute el comando anterior (Realmente no recomendaría este método ya que muchas aplicaciones dependen de cmd)
  • Cree un script por lotes y llámelo cmda (cmd con alias), por ejemplo. Haga que ejecute el comando anterior y coloque este script por lotes en algún lugar de su ruta.

1
+1 NICE !!! No he visto (o recordado) Doskey durante años ... (Reproducción de la! Memorias canción en mi cabeza!)
William Hilsum

19
No es necesario un script AutoHotkey aquí. Windows proporciona una forma de ejecutar automáticamente un archivo por lotes cada vez que ejecuta cmd.exe: technet.microsoft.com/en-us/library/cc779439(WS.10).aspx Lo configuro para que apunte a c: \ dev \ autorun.bat que carga macros de doskey y ejecuta otras prácticas utilidades.
Dan Fabulich

Estoy realmente sorprendido de que nadie haya sugerido que PowerShell es bastante bueno.
Eddie B

¿Las macros definidas funcionan desde el cuadro Win + R (Ejecutar)?
ZEE

38

Es un simple como:

  1. Cree un archivo con alias, por ejemplo, c: \ bin \ aliases :

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. Cree un archivo con todo lo que desea ejecutar cuando se inicia cmd.exe, incluida la carga de los alias con doskey, por ejemplo, c: \ bin \ cmd_autoruns.cmd :

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. Cree y ejecute una vez un archivo por lotes (por ejemplo, set_cmd_autorun.cmd ) que establecerá la Autorunclave del procesador de comandos en nuestro cmd_autoruns.cmd :

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

Como alternativa a set_cmd_autorun.cmd , también es posible crear un archivo .reg como el siguiente y luego combinarlo con un doble 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' probablemente debería ser 'color 0A'.
csnullptr

1
Solo necesita la "Autorun"="..."línea debajo de la [HKEY_...]línea, a menos que también desee establecer explícitamente las otras teclas.
c24w

5

Mi respuesta es similar a la de vriolk

Creé un archivo .bat que contenía mis macros (por ejemplo, c: \ winscripts \ autoexec.bat):

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

y luego desde un indicador de cmd ejecutó "cmd /?" para encontrar la clave de registro para editar para la ejecución automática de cmd:

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

usando regedit, agregue la ruta para su archivo de lote macro al valor de AutoRun (agregue la clave AutoRun si no está allí):

c: \ winscripts \ autoexec.bat

ahora, cada vez que ejecute "cmd" desde el indicador Inicio-> Ejecutar, este autoexec.bat también se ejecutará y creará las macros de doskey para usted.

Por cierto, whereis.cmd contiene esto:

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

que busca en su variable PATH el término que proporciona:

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

Por cierto, en lugar de whereispiratear, puedes usarlo, whereque es un comando incorporado
Dheeraj Bhaskar

1

Puede crear archivos .cmd y colocarlos en algún lugar de su% PATH% (como C: \ Windows). Para usar su alias web como ejemplo:

@C:
@cd \inetpub\wwwroot

Haría algo como:

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

No conozco ninguna forma de hacer un archivo de estilo .aliases plano.


1

Una forma muy rápida y sucia de tener un acceso directo listo, que no requiere mucho alboroto, es crear un archivo por lotes con el nombre del alias, en uno de los directorios que forman parte de la variable de entorno PATH. Por ejemplo, quería invocar Notepad ++ a través de un alias, así que creé npp.bat en C: \ WINDOWS que contenía lo siguiente:

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

ahora el comando npp se puede usar desde cualquier shell cmd, sin archivos de ejecución automática y / o excursiones al registro


0

La forma en que lo hice fue con un script de Python rápido:

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

Disculpas por las secuencias de comandos pobres, pero el uso es bastante agradable, en mi opinión. Colóquelo en algún lugar de su camino, agregue .py a su PATHEXT y agregue c: \ aliases a su PATH también (o cámbielo, lo que sea apropiado), luego use:

alias <command> <action>

alias (Sí, no =, aunque no sería difícil agregar un .split allí), y:

alias -p <command or part of>

Para mostrar lo que es algo.

Hackish, pero estúpidamente útil. Hay un script unalias equivalente, pero estoy seguro de que puedes resolverlo.

editar: Esto obviamente requiere python, escrito en v26 pero probablemente funcionará en cualquier cosa reciente. Como antes, perdón por la calidad :)

edit2: En realidad, algo como esto, pero agregar a las cosas de doskey sería mejor. También puede agregar comandos de inicio a cmd con la clave de registro de ejecución automática, por lo que podría ser mucho más limpio.


1
Buena solución, aunque un poco exagerada para mis necesidades.
Aparece el

De hecho, es. Simplemente me gusta tener control sobre cómo funcionan mis cosas, es todo: P
Phoshi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.