Я хотел бы знать, какие подходы вы используете для управления исполняемыми файлами в вашей системе. Например, у меня есть почти все, что доступно через командную строку, но теперь я подошел к пределу строки пути, поэтому я не могу добавить больше dir.
Так что посоветуете? Давным-давно я пытался использовать softLinks исполняемых файлов в Dir, принадлежащем пути, но этот подход не работал. Бросить "только исполняемый файл" в известный каталог, есть проблемы, что почти любое приложение требует набора файлов, так что это тоже плохо. Бросьте исполняемый файл и все его файлы в известный каталог, ммм, это сработает, но вероятность возникновения конфликта в имени файлов очень высока. Создать HardLink? я не знаю. Что вы думаете?
Ответы:
Один из способов, который я могу придумать, - это использовать другие переменные среды для хранения частичных путей; например, если у вас есть
затем вы можете создать новую переменную среды, например
после чего ваши исходные пути становятся
РЕДАКТИРОВАТЬ: Другой вариант - создать
bin
каталог, в котором хранятся.bat
файлы, указывающие на соответствующие.exe
файлы.РЕДАКТИРОВАТЬ 2: В комментарии Бена Фойгта к другому ответу упоминается, что использование других переменных среды, как было предложено, может не уменьшить длину,
%PATH%
потому что они будут расширены перед сохранением. Это может быть правдой, и я не проверял это. Другой вариант - использовать формы 8dot3 для более длинных имен каталогов, например,C:\Program Files
как правило, эквивалентC:\PROGRA~1
. Вы можете использовать,dir /x
чтобы увидеть более короткие имена.РЕДАКТИРОВАТЬ 3: Этот простой тест заставляет меня поверить, что Бен Фойгт прав.
В конце вы видите вывод,
hellohello
а неbyehello
.РЕДАКТИРОВАТЬ 4: если вы решите использовать командные файлы для исключения определенных путей
%PATH%
, вы можете быть обеспокоены тем, как передать аргументы из вашего командного файла в исполняемый файл, чтобы процесс был прозрачным (т.е. вы не заметите никакой разницы между вызовом командного файла и вызовом исполняемого файла). У меня нет большого опыта написания командных файлов, но, похоже, это нормально работает.Как правило, вы должны быть осторожны с запуском командных файлов из Интернета, поскольку вы можете делать с ними все, что угодно, например, форматировать жесткий диск. Если вы не доверяете приведенному выше коду (который я написал), вы можете протестировать его, заменив строку
с участием
В идеале вы должны точно знать, что делает каждая строка, прежде чем запускать ее.
источник
cmd
, обратите внимание, что вы можете использовать*
для экономии ввода. Так, например, из root введитеdir /x pro*
. Вы увидите желаемый каталог вместе с его именем 8dot3. Затем используйтеcd
для перехода к нему и повторите процесс.$PATH
которая работает очень аналогично%PATH%
Windows, поэтому я не уверен, в чем именно вы заключаете. По соглашению, имена каталогов UNIX обычно короче, чем в Windows, и в результате$PATH
также имеют тенденцию быть короче.Это проанализирует вашу переменную среды% PATH% и преобразует каждый каталог в его эквивалент короткого имени, а затем соберет все вместе:
Возьмите вывод и обновите переменную PATH в переменных среды.
источник
%%~sa
. Я попытался обновить ответ, но он не позволит мне, если я не изменю 6 символовесли вы используете Windows Vista или выше, вы можете сделать символическую ссылку на папку. например:
mklink /d C:\pf "C:\Program Files"
сделал бы ссылку, чтобы
c:\pf
была вашаprogram files
папка. Используя этот трюк, я убрал со своего пути 300 символов.источник
c:\Program Files
иc:\Program Files (x86)
на предварительно определенные переменные%ProgramFiles%
и%ProgramFiles(x86)%
tenforums.com/tutorials/… Они сохранят только несколько символов каждый , но если вы ДЕЙСТВИТЕЛЬНО находитесь на грани максимального использования PATH, разница может быть в этом. В этом отношении я собираюсь создать% pf% и% pfx%, которые разрешают правильные пути. Спасибо за идею! :)Если кому-то интересно ...
Я обнаружил, что мне никогда не нужны все эти пути сразу, поэтому я создаю кучу командных файлов «инициализации», которые соответственно изменяют путь.
Например, если бы я хотел заняться разработкой на C ++ в Eclipse, я бы сделал:
Это также удобно для предотвращения конфликтов между исполняемыми файлами с одинаковыми именами (например, компиляторами C ++ и D, у которых есть make.exe).
Мои командные файлы обычно выглядят так:
Я считаю этот подход относительно чистым и пока не сталкивался с какими-либо проблемами.
источник
Обычно мне не нужно об этом беспокоиться (я не сталкивался с ограничением размера пути - я даже не знаю, что это такое в современных системах Windows), но вот что я могу сделать, чтобы не помещать каталог программы в тропинка:
c:\util
каталог, который находится на путив противном случае я добавлю в
c:\util
каталог простой cmd / batch-файл, который выглядит примерно так:который по сути создает псевдоним для команды. Это не обязательно идеально. Некоторые программы действительно настаивают на том, чтобы быть на пути (в настоящее время это довольно редко), а другие программы, которые пытаются его вызвать, могут не найти его должным образом. Но для большинства случаев он работает хорошо.
Но в целом мне не приходилось беспокоиться о том, чтобы избежать добавления каталогов в путь.
источник
cmd /c
в начале, но это, в свою очередь, означает, что сценарий сборки становится специфичным для Windows: / Я спросил об этом в отдельном вопросе .Другая идея: используйте DIR / X для определения коротких имен, созданных для имен файлов, отличных от 8dot3. Затем используйте их в своем% PATH%.
Например, «C: \ Program Files» становится «C: \ PROGRA ~ 1».
источник
Используйте ключ реестра App Path вместо переменной пути для путей, зависящих от приложения:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx
источник
Я написал и постоянно использую стандартный поток (stdin / stderr / stdout) и программу PROXY с кодом выхода (называемую диспетчером https://github.com/131/dispatcher )
Все программы CLI, которые я использую (node, php, python, git, svn, rsync, plink ...), которые я использую, на самом деле являются одним и тем же файлом exe (около 10 КБ, я просто называю его по-другому), который я вставляю в тот же каталог. Фиктивный статический открытый текстовый файл выполняет «имя прокси-файла для реального сопоставления exe».
Диспетчер использует низкоуровневый API Win32 для управления процессами, чтобы быть абсолютно прозрачным.
Используя это программное обеспечение, в моем PATH установлен только ОДИН дополнительный каталог для всех программ, которые я могу использовать.
источник
Создание папки c: \ bin, добавление к вашему пути и жесткая ссылка, как вы сказали, может сократить строку. Возможно, добавьте переменную pf в системные переменные со значением c: \ Program Files, затем замените c: \ Program Files на% pf% в пути.
Редактировать:
Создайте виртуальный диск. subst p: "c: \ program files"
источник
Я выполняю следующие шаги, чтобы сделать записи управляемыми:
Создал разных пользователей для разных комбинаций использования программных пакетов. Пример: (a) Создал пользовательскую сеть для предоставления доступа ко всему программному обеспечению для веб-разработки; (b) Создана база данных пользователей для предоставления доступа ко всем программным пакетам баз данных и хранилищ данных. Помните, что некоторые программы могут создавать более одной записи. Или когда-нибудь я разбиваю это на конкретных пользователей оракула и конкретных пользователей MSSQL и конкретных пользователей оракула. Я поместил MySQL / PostgreSQL, tomcat, wamp, xamp все в учетную запись пользователя webr.
Если возможно, установите общие пакеты, такие как office, photoshop, .. в зависимости от системы, доступные для всех пользователей и специальные пакеты для конкретных пользователей. Конечно, мне приходилось входить в систему разных пользователей и устанавливать их. Не все программное обеспечение может предоставлять эту возможность. Если опция «установить только для этого пользователя» недоступна, установите ее для всей системы.
Я избегаю установки программ в папку Program File (x86) или в Program File. Я всегда устанавливаю в базовый каталог. Например, 64-разрядная версия MySQL помещается в папку «C: \ mysql64», а 32-разрядная версия MySQL - в папку «C: \ mysql». Я всегда предполагаю добавление суффикса 64 только для 64-битного программного обеспечения. Если суффикса нет, то это 32 бит. Я следую тому же принципу в отношении Java и других. Таким образом мой путь будет короче, не считая "C: \ Program File (x86)". Для некоторого программного обеспечения может потребоваться отредактировать файл конфигурации, чтобы показать, где именно находится файл .exe. В эту папку будет установлена только программа, которая требует установки в "C: \ Program File (x86)". Всегда не забываю сокращать имена. Я избегаю таких деталей, как номер версии, например, tomcat / release / version-2.5.0.3. Если мне нужна известная версия, Я создаю файл по названию версии и помещаю его в папку tomcat. В общем укорачивайте ссылку максимально.
Включите любой пакет для замены сокращенной ссылки на путь, если все вышеперечисленные шаги прошли ограничение Windows.
Затем войдите в систему конкретного пользователя (мобильное приложение, база данных / хранилище данных или веб-разработка .. ..) и выполните соответствующие задачи.
Вы также можете создавать виртуальные окна внутри окон. Пока у вас есть одна лицензионная копия ОС, возможно создание нескольких виртуальных окон с одним и тем же ключом. Вы можете поместить на этот компьютер пакеты, предназначенные для конкретной задачи. Приходится каждый раз запускать отдельную виртуальную машину. Некоторые пакеты, интенсивно использующие память, например, создатели 3D-анимационных фильмов, должны быть помещены в основную машину, а не в виртуальную машину, поскольку виртуальная машина будет иметь только часть оперативной памяти, доступной для ее использования. Однако загружать каждую виртуальную машину - это боль.
источник
Приведенные выше решения работают, только если вы можете сократить свой путь. В моем случае это был не вариант, и мне было сложно запускать скрипт каждый раз, когда я открывал командную строку. Поэтому я написал простой скрипт, который запускается автоматически при открытии командной строки и добавляет содержимое текстового файла к вашему пути.
Есть также некоторые контексты, в которых запуск этого скрипта нарушает работу (скажем, в оболочке github или cygwin), поэтому я также добавил файл, содержащий список путей, которые, если в них запускается командная строка, переменная пути не Не изменяется с помощью сценария запуска, который обычно обновляет путь.
И Path.txt будет выглядеть примерно так
Хотя Dontsetup.txt будет выглядеть примерно так
Чтобы это запускалось автоматически при запуске, откройте regedit, перейдите к HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Command Processor, затем щелкните правой кнопкой мыши справа и нажмите новый -> Многострочное значение. Назовите его AutoRun. Установите значение на
или где еще вы сохранили командный файл выше.
источник
Не пробовал, но будет ли работать разделение PATH на части и соединение их в окончательной работе с переменными?
Пример сначала скажем, у вас есть что-то вроде
PATH={LONGPATH1};{LONGPATH2};....{2048th char}....{LONGPATH_N-1};{LONGPATH_N}
Вместо этого вы создаете:
источник