Solía trabajar en bash y beneficiarme mucho del alias. ¿Hay alguna forma equivalente en la línea de comandos de Windows?
No quiero simular un entorno Linux, por lo que cygwin no es una opción. Solo necesito un atajo para un comando muy largo, como cd a_very_long_path.
windows
command-line
StarPinkER
fuente
fuente

doskey(no te dejes engañar por el nombre, no es el viejo DOSkey de MS DOS). Úselodoskey /?para más información. Aparte de eso, me temo, esta pregunta está fuera de tema aquí.Respuestas:
Como dijo Christian.K en su comentario, el comando DOSKEY se puede usar para definir macros, que son análogas a los alias.
Los parámetros de macro se referencian en la definición a través de
$posiciones prefijadas: a$1través$9y$*para todos.Consulte la documentación de doskey technet , o escriba
doskey /?ohelp doskeydesde la línea de comandos para obtener más información.Pero existen serias limitaciones con las macros de DOSKEY:
someMacro|findstr '^'ydir|someMacrofallan.for /f %A in ('someMacro') do ...fallaLas limitaciones son tan severas que rara vez uso macros DOSKEY.
Obviamente, puede crear scripts por lotes en lugar de macros y asegurarse de que las ubicaciones de los scripts estén en su RUTA. Pero luego debe anteponer cada script con CALL si desea utilizar el script dentro de otro script.
Puede crear "macros" variables simples para comandos largos y de uso frecuente, pero la sintaxis es un poco incómoda de escribir, ya que necesita expandir la "macro" cuando desea usarla.
Definición:
Uso (desde la línea de comandos o script)
fuente
Puede hacer un script por lotes y guardarlo en su ruta.
En Linux, haría un script y lo agregaría a la carpeta
~/binen Windows, puede hacer lo mismo.Agregue
%USERPROFILE%\bina suPATHvariable de entorno. Luego guarda tus scripts allí.quickcd.cmdAhora puede escribir
quickcden la línea de comando.También se puede invocar dentro de un script usando la
callfunciónfuente
Microsoft Windows [Version 10.0.17134.648]/dbandera aCDsubstSi realmente estás tratando de evitar algo como esto:
Puede usar el
substcomando para asignar esa ruta larga a una letra de unidad separadaLuego, cuando desee saltar a esa carpeta, simplemente puede escribir
m:en la línea de comando.La ventaja de esto
doskeyes que funciona en todos los programas por lotes y aparece en cualquier cuadro de diálogo de archivo dentro de Windows.Si ya no quieres el mapeo:
fuente
Podría usar el mismo truco que usa Windows: establecer una variable de entorno (o simplemente una variable en un contexto por lotes), por ejemplo, hay una variable de entorno% windir% (y algunos otros) Para que pueda hacer un
o
que hace lo mismo Entonces, todo lo que tienes que hacer es:
después de eso puedes hacer (desde donde estés):
o
o lo que quieras
fuente
A diferencia de Linux, en Windows los alias pueden tomar argumentos y se les pueden dar parámetros para asignar esos argumentos en su definición.
El comando interno incorporado es doskey , lo que significa que no es un archivo ejecutable externo ubicado,
%SystemRoot%\System32sino que es una característica de lacmd.execual se encuentra%SystemRoot%o%Windir%apunta a laC:\Windowscarpeta de manera predeterminada.Doskey define alias entre muchas otras cosas. En la terminología de Windows, los alias se denominan macros. Para establecer un alias que usa
Aquí
$1apunta al primer argumento, y$*apunta a todos los argumentos.Siempre usaría
$*una comilla doble$1si solo hay un argumento para omitir espacios que se tratan como caracteres especiales, es decir, como separadores (para comandos).Además, puede definir sus macros de
aliasen un archivo separado, decirLinuxAliases.macroy luego obtenerlo usandoCargará todos los alias definidos dentro del archivo solo para la sesión actual , lo que significa que cuando esté
exitfuera delcmd.exeproceso (también conocido como shell y símbolo del sistema), desaparecerán.Para tener alias permanentes, puede escribir el comando completo en algún lugar de una clave regedit llamada AutoRun o AutoCommand o algo similar, lo que no puedo recordar ahora junto con la sintaxis interna del archivo de macro: P
Aquí están las documentaciones oficiales e incluso mejores para el comando.
fuente
He hecho un "alias" como ese específicamente para cambiar el directorio. Básicamente, creé un archivo llamado
fav.baty lo puse en una carpeta en PATH (por ejemplo, C: \ MyBatches):Entonces puedo saltar a cualquier carpeta predefinida muy rápidamente. Escribí un artículo completo sobre esa técnica aquí .
fuente
suponiendo que permanezca en el mismo disco, es decir, no
D:secd D:\somedir\necesita.En mi caso, C: contiene archivos del sistema, pero todo el trabajo está en D:
2 partes. Primero configure algunos directorios de trabajo, utilizando un archivo por lotes.
digamos localprofile.cmd . Puede tener varios de estos, simplemente ejecútelos según sea necesario.
ahora use otro archivo de comando para moverse, basado en las variables de entorno que acaba de establecer.
wd.cmd
Y un poco de muestra de uso:
Se supone que wd por sí solo me muestra la lista de directorios marcados. Funciona, pero no estoy seguro de por qué recibo este mensaje de "CD inesperado".
Lotes regulares de .cmd
Además de la navegación del directorio, puede crear un foo.cmd en algún lugar de su RUTA y puede actuar como un alias. Recuerde, a diferencia de los shells de Linux / OSX, los archivos cmd pueden afectar las variables de entorno y la sesión, sin necesidad de obtenerlas .
Tengo un cdbin.cmd para navegar, por ejemplo:
Y este es un pseudo-grep grep.cmd
en acción (cualquiera que sea el tipo / + 2 / + 10 significa)
D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10fuente
Puede usar doskey.exe , aquí hay un ejemplo:
Y ahora, si escribe
qcd, se cd a esa ruta.Aquí hay algo de ayuda con las macro de doskey :
Esa es la forma más simple, aquí hay un ejemplo:
y si escribe
wordla salida es:Puede usar $ 1- $ 9 para los parámetros, aquí hay un ejemplo:
y si escribe
npd, abrirá el bloc de notas, pero si escribimos,npd test.txtabrirá test.txt en el bloc de notas .Puede usar $ * para todos los parámetros, aquí hay otro ejemplo:
y si escribe
prt This is short., la salida será:Puede usar $ T para múltiples comandos, aquí hay un ejemplo:
y si escribe
newline Hello and, la salida será:Espero que entiendas.
fuente