При вводе команды в оболочке Windows сначала выполняется поиск программы в текущем каталоге, а затем в каталогах PATH. Можно ли как-то (например, с помощью переменной среды) исключить текущий каталог из поиска? Что-то вроде SafeDllSearchMode, но для исполняемых файлов вместо DLL-ов?

Другими словами - если у меня есть один файл foo.exe в текущем каталоге и второй файл в другом каталоге в PATH, как я могу выполнить файл в каталоге PATH без указания его полного пути?

1 ответ1

0

Я не знаю ни одного способа заставить cmd исключить текущий путь. Однако в качестве близкого приближения вы можете использовать mkdir, чтобы создать пустой каталог в текущем каталоге, перейти в него, выполнить команду, выполнить резервное копирование и удалить каталог:

SET _tempdir=%date%%time%
MKDIR %_tempdir%
CD %_tempdir%
REM run commands
...
CD ..
RM %_tempdir%

Конечно, пустой каталог может быть где угодно, у вас есть права на запись; если он находится где-то еще, кроме той же директории, вероятно, будет проще использовать pushd, чтобы войти в него, и popd, чтобы вернуться, прежде чем удалить его. Использование пустого каталога, который вы только что создали, кажется лучшей идеей, чем переход к произвольному каталогу, хотя новый каталог все равно будет первым в пути, поэтому лучше использовать тот, который, как вы знаете, пуст.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .