Por que meu diff.exe não é executado a partir da linha cmd?

0

Eu tenho um número de utilitários instalados em C:\program files (x86)\git\bin , muitos dos quais sombra interna funções de linha de comando. 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 subchave diff.exe a [HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths]
  • Criei diff.lnk em C:\dev (que está no meu PATH) e adicionei .LNK ao meu PATHEXT
  • Criamos 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 execute diff ) não consegue encontrar nenhum arquivo que eu especifique através da linha de comando.

Da mesma forma, o segundo método permitiu que diff fosse executado se eu estivesse atualmente em C:\dev , mas não em outro lugar.

Eu tenho um script doskey que funciona como uma máquina alias (principalmente: 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 acima não funcionou?

    
por Adam Smith 19.07.2014 / 00:38

1 resposta

1

Any idea why the above didn't work?

Alguns.

  • HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths não tem efeito em cmd , porque cmd não usa ShellExecuteEx para executar programas.
  • A criação de um arquivo .lnk deve ter funcionado. Da sua descrição, parece ser mais provável que a declaração
    C:\dev is on my PATH.
    não seja na verdade é verdade.
  • diff.bat não funcionou como você queria porque a sintaxe que você estava usando para substituir todos os parâmetros posicionais era sem sentido. *$ não é nem um basismo acidental. Conforme observado, %* é a sintaxe correta para fazer isso em scripts interpretados por cmd . ( É também a sintaxe correta para o Take Command, que suporta %# como bônus. )
por 19.07.2014 / 03:17