Jak wykluczyć bieżący katalog z wyszukiwania wykonywalnego w systemie Windows?

0

Podczas wpisywania polecenia w powłoce Windows najpierw szuka programu w bieżącym katalogu, a następnie z katalogów PATH. Czy można w jakiś sposób (np. Przez zmienną środowiskową) wykluczyć katalog bieżący z wyszukiwania? Coś takiego jak SafeDllSearchMode, ale dla plików wykonywalnych zamiast bibliotek DLL?

Innymi słowy - jeśli mam jeden plik foo.exe w bieżącym katalogu i drugi w innym katalogu w PATH, jak mogę wykonać ten w katalogu PATH bez określania jego pełnej ścieżki?

Aivar
źródło
Jako obejście problemu możesz zrobić cd \somwhere\else do katalogu, w którym nie ma plików wykonywalnych.
Aganju

Odpowiedzi:

0

Nie znam żadnego sposobu, aby cmd wykluczył bieżącą ścieżkę. W przybliżeniu można jednak użyć mkdir, aby utworzyć pusty katalog w bieżącym katalogu, umieścić go w nim, uruchomić polecenie, wykonać kopię zapasową i usunąć katalog:

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

Oczywiście pusty katalog może być wszędzie tam, gdzie masz dostęp do zapisu; jeśli jest gdzieś indziej niż w tym samym katalogu, prawdopodobnie będzie łatwiej użyć pushd, aby wejść do niego i popd, aby wrócić przed usunięciem. Użycie pustego katalogu, który właśnie utworzyłeś, wydaje się lepszym pomysłem niż cd do losowego katalogu - nowy katalog nadal będzie pierwszy na ścieżce, więc lepiej użyć takiego, który jest pusty.

Patrick Hogan
źródło