Переменная PATH не поддерживает подстановочные знаки или рекурсию. Это по замыслу.
Есть два возможных обходных пути, которые я использовал в некоторых случаях:
Создайте каталог с простыми пакетными файлами и добавьте этот каталог в PATH. Каждый пакетный файл может запустить нужную вам программу, например:
:: CMD_Software.bat: start CMD_Software
@C:\Users\myuser\CMD_Software\CMD_Software.exe %*
Первая строка - это комментарий, вторая начинается с @
чтобы не показывать выполняемую команду, а %*
используется для передачи любых аргументов командной строки в EXE.
Добавьте псевдонимы в CMD.EXE:
DOSKEY CMD_Software="C:\Users\myuser\CMD_Software\CMD_Software.exe" $*
Это по существу переводит CMD_Software
в командной строке на все после знака равенства. $*
Заменяется предоставленными аргументами.
Я предпочитаю второй подход, потому что вы можете сгруппировать все псевдонимы в один файл (см. Ключ «/MACROFILE» в DOSKEY /?) и запускать его каждый раз, когда интерпретатор команд начинает использовать параметр реестра (см. ключ "Автозапуск" в CMD /?).
Недостаток второго метода заключается в том, что псевдонимы работают только в начале командной строки. Это может быть проблемой, если вы хотите объединить команды. Например, CLS & CMD_Software
не будет работать, если вы не поместите псевдоним в отдельной строке, используя скобки:
CLS & (
CMD_Software
)
Всякий раз, когда это становится проблемой, я просто возвращаюсь к подходу пакетного файла.