Путь к системе DOS - PullRequest
       30

Путь к системе DOS

4 голосов
/ 08 декабря 2008

Есть ли способ программно, через пакетный файл (или скрипт powershell), поместить все папки в c:\Program Files в системную переменную PATH? Я зависим от командной строки и очень хочу просто запустить программу из командной строки.

Да, я завидую оболочкам Linux.

Ответы [ 2 ]

6 голосов
/ 08 декабря 2008

Передача "C: \ Program Files" в качестве параметра в этот пакетный файл:

@echo off

FOR /D %%G IN (%1\*) DO PATH "%%G";%path%
5 голосов
/ 08 декабря 2008

Это может привести к поломке вашего компьютера в смысле вызова DLL Hell. Когда вы вызываете каждый исполняемый файл, ОС просматривает каждый каталог в PATH, чтобы найти каждую DLL или даже EXE, на которую ссылается этот исполняемый файл. Вполне вероятно, что ОС найдет неправильные, когда вы добавите больше каталогов в PATH.

Итак, лучшая практика - избегать увеличения PATH и даже уменьшать его. Вместо неявных зависимостей сделайте их явными.

Вместо этого я рекомендую такой подход:

  1. Создайте каталог bin в вашем домашнем каталоге пользователя
  2. Добавьте этот каталог bin к своему пользователю PATH переменная
  3. Создайте сценарий Windows CMD в каталоге bin для каждого приложения, которое вы хотите вызвать из командной строки (то же имя, что и для исполняемого файла, который вы вводите)
  4. В каждом сценарии вызовите SetLocal, добавьте каталог установки приложения (под %ProgramFiles%) в PATH, затем вызовите исполняемый файл с аргументами из командной строки
  5. Удалите соответствующий каталог из PATH, чтобы этот скрипт стал единственным способом вызова исполняемого файла
...