Tengo varias utilidades instaladas en C:\program files (x86)\git\bin
, muchas de las cuales ocultan funciones de línea de comandos integradas. Para no entrar en conflicto con eso, preferiría NO agregar esa carpeta a la RUTA, sin embargo, quiero poder escribir diff a.txt b.txt
en cualquier lugar y ejecutar diferencias en las dos.
Cosas que he probado:
- Se agregó una
diff.exe
subclave a[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths]
- Creé un
diff.lnk
inC:\dev
(que está en mi RUTA) y lo agregué.LNK
a mi RUTA Creé un
diff.bat
con el siguiente código:@"C:\Program Files (x86)\git\bin\diff.exe" *$
El único método que funcionó fue el último, que (aunque se ejecuta diff
) no encuentra ningún archivo que especifique a través de la línea de comando.
De manera similar, el segundo método permitía diff
ejecutarse si estaba actualmente C:\dev
pero no en otro lugar.
Tengo un doskey
script que funciona como una máquina de alias (en particular: npp=notepad++
al iniciar cmd), pero preferiría no recurrir a él para esto. Lo haré si es necesario.
¿Alguna sugerencia? ¿Alguna idea de por qué lo anterior no funcionó?
Respuesta1
¿Alguna idea de por qué lo anterior no funcionó?
Algunos.
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
no tiene ningún efecto sobrecmd
, porquecmd
no se utilizaShellExecuteEx
para ejecutar programas.- Creando un
.lnk
archivo debería haber funcionado. Según su descripción, parece lo más probable que la declaración
de hecho no es cierto.C:\dev
está en miPATH
. diff.bat
no funcionó como quería porque la sintaxis que estaba usando para sustituir todos los parámetros posicionales era un galimatías.*$
Ni siquiera es un bashismo accidental. Como se ha señalado,%*
es la sintaxis correcta para hacer eso en scripts interpretados porcmd
. (También es la sintaxis correcta para Take Command, que se admite%#
como beneficio adicional.)