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$1
través$9
y$*
para todos.Consulte la documentación de doskey technet , o escriba
doskey /?
ohelp doskey
desde la línea de comandos para obtener más información.Pero existen serias limitaciones con las macros de DOSKEY:
someMacro|findstr '^'
ydir|someMacro
fallan.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
~/bin
en Windows, puede hacer lo mismo.Agregue
%USERPROFILE%\bin
a suPATH
variable de entorno. Luego guarda tus scripts allí.quickcd.cmd
Ahora puede escribir
quickcd
en la línea de comando.También se puede invocar dentro de un script usando la
call
funciónfuente
Microsoft Windows [Version 10.0.17134.648]
/d
bandera aCD
subst
Si realmente estás tratando de evitar algo como esto:
Puede usar el
subst
comando 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
doskey
es 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%\System32
sino que es una característica de lacmd.exe
cual se encuentra%SystemRoot%
o%Windir%
apunta a laC:\Windows
carpeta 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í
$1
apunta al primer argumento, y$*
apunta a todos los argumentos.Siempre usaría
$*
una comilla doble$1
si 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.macro
y luego obtenerlo usandoCargará todos los alias definidos dentro del archivo solo para la sesión actual , lo que significa que cuando esté
exit
fuera delcmd.exe
proceso (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.bat
y 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 /+10
fuente
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
word
la 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.txt
abrirá 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