Один из способов, который я могу придумать, - это использовать другие переменные среды для хранения частичных путей; например, если у вас есть
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1;
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2;
затем вы можете создать новую переменную среды, например
SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places
после чего ваши исходные пути становятся
%P1%\subdir1;
%P1%\subdir2;
РЕДАКТИРОВАТЬ: Другой вариант - создать bin
каталог, в котором хранятся .bat
файлы, указывающие на соответствующие .exe
файлы.
РЕДАКТИРОВАТЬ 2: В комментарии Бена Фойгта к другому ответу упоминается, что использование других переменных среды, как было предложено, может не уменьшить длину, %PATH%
потому что они будут расширены перед сохранением. Это может быть правдой, и я не проверял это. Другой вариант - использовать формы 8dot3 для более длинных имен каталогов, например, C:\Program Files
как правило, эквивалент C:\PROGRA~1
. Вы можете использовать, dir /x
чтобы увидеть более короткие имена.
РЕДАКТИРОВАТЬ 3: Этот простой тест заставляет меня поверить, что Бен Фойгт прав.
set test1=hello
set test2=%test1%hello
set test1=bye
echo %test2%
В конце вы видите вывод, hellohello
а не byehello
.
РЕДАКТИРОВАТЬ 4: если вы решите использовать командные файлы для исключения определенных путей %PATH%
, вы можете быть обеспокоены тем, как передать аргументы из вашего командного файла в исполняемый файл, чтобы процесс был прозрачным (т.е. вы не заметите никакой разницы между вызовом командного файла и вызовом исполняемого файла). У меня нет большого опыта написания командных файлов, но, похоже, это нормально работает.
@echo off
rem This batch file points to an executable of the same name
rem that is located in another directory. Specify the directory
rem here:
set actualdir=c:\this_is\an_example_path
rem You do not need to change anything that follows.
set actualfile=%0
set args=%1
:beginloop
if "%1" == "" goto endloop
shift
set args=%args% %1
goto beginloop
:endloop
%actualdir%\%actualfile% %args%
Как правило, вы должны быть осторожны с запуском командных файлов из Интернета, поскольку вы можете делать с ними все, что угодно, например, форматировать жесткий диск. Если вы не доверяете приведенному выше коду (который я написал), вы можете протестировать его, заменив строку
%actualdir%\%actualfile% %args%
с участием
echo %actualdir%\%actualfile% %args%
В идеале вы должны точно знать, что делает каждая строка, прежде чем запускать ее.