Eu tenho vários utilitários instalados no C:\program files (x86)\git\bin
, muitos dos quais sombreiam funções de linha de comando integradas. Para não entrar em conflito com isso, prefiro NÃO adicionar essa pasta ao PATH, mas quero poder digitar diff a.txt b.txt
em qualquer lugar e executar o diff nos dois.
Coisas que tentei:
- Adicionada uma
diff.exe
subchave a[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths]
- Criei um
diff.lnk
inC:\dev
(que está no meu PATH) e adicionei.LNK
ao meu PATHEXT Criei 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
) não consegue encontrar nenhum arquivo especificado por meio da linha de comando.
Da mesma forma, o segundo método poderia diff
ser executado 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 (principalmente: npp=notepad++
no cmd start), mas prefiro não recorrer a isso para isso. Eu farei se for preciso.
Alguma sugestão? Alguma idéia de por que o procedimento acima não funcionou?
Responder1
Alguma idéia de por que o procedimento acima não funcionou?
Um pouco.
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
não tem efeito sobrecmd
, porquecmd
não é usadoShellExecuteEx
para executar programas.- Criar um
.lnk
arquivo deveria ter funcionado. Pela sua descrição, parece mais provável que a afirmação
não é de fato verdade.C:\dev
está no meuPATH
. diff.bat
não funcionou como você queria porque a sintaxe que você estava usando para substituir todos os parâmetros posicionais era algo sem sentido.*$
nem é um bashismo acidental. Como observado,%*
é a sintaxe correta para fazer isso em scripts interpretados porcmd
. (É também a sintaxe correta para Take Command, que oferece suporte%#
como bônus.)