Eu tenho vários utilitários instalados C:\program files (x86)\git\bin
, muitos dos quais funcionam na linha de comando de sombra. Para não entrar em conflito com isso, prefiro NÃO adicionar essa pasta ao PATH, no entanto, quero poder digitar em diff a.txt b.txt
qualquer lugar e executar diff nos dois.
Coisas que tentei:
- Adicionada uma
diff.exe
subchave ao[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths]
- Criei um
diff.lnk
inC:\dev
(que está no meu PATH) e foi adicionado.LNK
ao meu PATHEXT Criou um
diff.bat
com o seguinte código:@"C:\Program Files (x86)\git\bin\diff.exe" *$
O único método que funcionou foi o último, que (embora seja executado diff
) falha ao encontrar os arquivos especificados por meio da linha de comando.
Da mesma forma, o segundo método permitiu diff
a execução se eu estivesse atualmente, C:\dev
mas não em outro lugar.
Eu tenho um doskey
script que funciona como uma máquina de alias (notavelmente: npp=notepad++
no cmd start), mas eu prefiro não recorrer a isso para isso. Eu vou se for preciso.
Alguma sugestão? Alguma idéia de por que o exposto acima não funcionou?
%*
, em vez de*$
gostar@"C:\Program Files (x86)\git\bin\diff.exe" %*
?Respostas:
Um pouco.
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
não tem efeitocmd
, porquecmd
não usaShellExecuteEx
para executar programas..lnk
arquivo deveria ter funcionado. Pela sua descrição, parece o mais provável que a declaração na verdade não é verdade.diff.bat
não funcionou como você queria, porque a sintaxe usada para substituir todos os parâmetros posicionais era sem sentido.*$
nem sequer é um basismo acidental. Como observado,%*
é a sintaxe correta para fazer isso nos scripts interpretados porcmd
. ( Também é a sintaxe correta do Take Command, que suporta%#
como um bônus. )fonte
*$
Eu acredito que eu confundido que a partir dedoskey
ondedoskey alias=command *$
está correta (talvez seja$*
eu estou copiando da memória?)doskey alias=command $*
. Eu verifiquei minha variável de ambiente PATH eC:\dev
estava de fato no PATH, mas a mudei para uma pasta diferente (C:\dev\path
) e funcionou perfeitamente. Para quem não tenho resposta. Tenho certeza de que sua sugestão%*
em um arquivo em lotes também funcionaria, obrigado!