У меня установлено несколько утилит в C:\program files (x86)\git\bin
, многие из которых затеняют встроенные функции командной строки. Чтобы не нарушать это, я бы предпочел НЕ добавлять эту папку в PATH, однако я хочу иметь возможность печатать diff a.txt b.txt
где угодно и запускать diff для двух.
Что я пробовал:
- Добавлен
diff.exe
подраздел в[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths]
- Создал
diff.lnk
inC:\dev
(который находится в моем PATH) и добавил.LNK
в мой PATHEXT Создал
diff.bat
с помощью следующего кода:@"C:\Program Files (x86)\git\bin\diff.exe" *$
Единственный сработавший метод — последний, который (хотя и работает diff
) не может найти ни одного файла, указанного мной в командной строке.
Аналогично, второй метод допускал diff
запуск, если я в данный момент находился внутри, C:\dev
но не в другом месте.
У меня есть doskey
скрипт, который работает как псевдоним машины (в частности: npp=notepad++
при запуске cmd), но я бы предпочел не прибегать к нему для этого. Я сделаю это, если придется.
Есть предложения? Есть идеи, почему вышеизложенное не сработало?
решение1
Есть идеи, почему вышеизложенное не сработало?
Немного.
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
не оказывает никакого влияния наcmd
, посколькуcmd
не используетсяShellExecuteEx
для запуска программ.- Создание
.lnk
файла должно было сработать. Из вашего описания наиболее вероятным представляется утверждение
на самом деле это не так.C:\dev
находится на моемPATH
. diff.bat
не сработало так, как вы хотели, потому что синтаксис, который вы использовали для подстановки всех позиционных параметров, был тарабарщиной.*$
даже не случайный башизм. Как было отмечено,%*
правильный ли синтаксис для этого в скриптах, интерпретируемыхcmd
. (Это также правильный синтаксис для Take Command, который поддерживает%#
в качестве бонуса.)