В моей домашней папке есть каталог, в который я помещаю программное обеспечение командной строки (CMD_Software). Я помещаю каждую часть программного обеспечения в свой собственный каталог в CMD_Software, чтобы избежать беспорядка.
Я хотел бы сделать одну запись в моей переменной PATH, которая позволит получить доступ к CMD_Software и всем каталогам, которые он содержит, из командной строки.
Я пытался, C:\Users\myuser\CMD_Software\*
но это ничего не сделало. В этот момент у меня кончились идеи.
Обратите внимание, что я не пытаюсь установить новый путь в терминале, я пытаюсь установить новый путь в «Переменных среды», доступных на вкладке «Дополнительно» в свойствах системы.
windows
windows-8
command-line
environment-variables
Лэндон Брейнард
источник
источник
Ответы:
Переменная PATH не поддерживает подстановочные знаки или рекурсию. Это по замыслу.
Есть два возможных обходных пути, которые я использовал в некоторых случаях:
Создайте каталог с простыми пакетными файлами и добавьте этот каталог в PATH. Каждый пакетный файл может запустить нужную вам программу, например:
Первая строка является комментарием, вторая начинается с того,
@
чтобы не показывать выполняемую команду, и%*
используется для передачи любых аргументов командной строки в EXE.Добавьте псевдонимы в CMD.EXE:
По сути, это означает, что
CMD_Software
в командной строке все после знака равенства.$*
Заменяется указанными аргументами.Я предпочитаю второй подход, потому что вы можете сгруппировать все псевдонимы в один файл (см. Ключ «/ MACROFILE» в DOSKEY /?) И запускать его автоматически всякий раз, когда интерпретатор команд начинает использовать параметр реестра (см. Ключ «AutoRun» в CMD /?).
Недостаток второго метода заключается в том, что псевдонимы работают только в начале командной строки. Это может быть проблемой, если вы хотите объединить команды. Например,
CLS & CMD_Software
не будет работать, если вы не поместите псевдоним в отдельной строке, используя скобки:Всякий раз, когда это становится проблемой, я просто возвращаюсь к подходу пакетного файла.
источник
Это то, что я использую для решения проблемы. Скопируйте этот скрипт ниже и сохраните его как
FIXPATH.BAT
в папку, которую вы добавили вPATH
переменную окружения. Например:Теперь, когда вам нужно запустить программу, которая находится в подпапке, скажите ...
fixpath
Сначала запустите, а затем введите команду (например,grep
илиexiftool
) следующим образом:FIXPATH.BAT
Благодаря ответу @ VonC
источник
Поместите подкаталог «programlinks \» в ... \ CMD_Software (или где угодно, фактически) и заполните его символическими ссылками или жесткими ссылками на каждый исполняемый файл, к которому вы хотите получить доступ. Тогда достаточно одной записи в PATH для ... \ программных ссылок.
источник
Если вы не слишком расстроены этой идеей, вы можете скопировать инструменты командной строки в каталог Windows \ System32. Затем вы можете запустить их из любого каталога, например, ping или ipconfig.
править
После немного мастерить вокруг, это возможно. Вам просто нужно использовать точки с запятой для разграничения ваших каталогов. Скажем, у вас была программа в «folder1» и «folder2». Вы бы написали свой путь так:
Затем вы можете вызвать программу в любом каталоге прямо из командной строки. AFAIK, нет другого способа сделать это только одной строкой.
Вспомогательная информация: http://en.wikipedia.org/wiki/PATH_(variable)
источник
program.bat
как%PATH%\program.bat
более или менее противоположен тому, для чего предназначен PATH.