EDYCJA: Powinienem był dodać, jeśli nie możesz użyć polecenia GDZIE z wiersza polecenia, sprawdź swoją zmienną PATH. (Wystarczy użyć polecenia „path”). Upewnij się, że C: \ Windows \ System32 znajduje się na twojej ścieżce. Tam właśnie znajduje się „where.exe”.
GDZIE jest polecenie, którego szukasz! GDZIE jest jak skrzyżowanie wbudowanej powłoki „UNIX” powłoki „UNIX” z poleceniem „locate”, ponieważ działa zarówno dla plików wykonywalnych poleceń, jak i zwykłych plików.
Jest również nieco bardziej skomplikowany niż którykolwiek z tych dwóch, choć generalnie prosty
WHERE <file>
będzie działać.
Różni się od polecenia „locate” tym, że nie przegląda całego systemu plików. Zamiast tego domyślnym zachowaniem jest wyszukiwanie plików w dwóch lokalizacjach:
- Bieżący katalog.
- Wszystkie katalogi w zmiennej PATH.
Tak więc każde polecenie, które można uruchomić bezpośrednio z wiersza polecenia bez określania katalogu, zostanie znalezione przez polecenie WHERE. (Ponieważ każde takie polecenie jest już na liście zmiennych PATH).
Jeśli chcesz wyszukiwać tylko w zmiennej ścieżki poleceń, możesz użyć:
WHERE "$path:<search text>"
Jeśli z drugiej strony chcesz znaleźć wszystkie kopie pliku w drzewie katalogów, możesz użyć:
WHERE /R <Top Level Directory> <search text>
Wreszcie WHERE znajdzie polecenia i wszelkie pliki z rozszerzeniem ze zmiennej PATHEXT bez uwzględnienia rozszerzenia. Wszystkie pozostałe pliki muszą być określone dokładnie lub za pomocą symboli wieloznacznych.
Weźmy na przykład pliki „dxdiag.exe” i „dxdiagn.dll”. Zwróć uwagę na następujące polecenie i jego dane wyjściowe:
WHERE /R C:\Windows dxdiag
C:\Windows\System32\dxdiag.exe
C:\Windows\SysWOW64\dxdiag.exe
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiag.exe
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiag.exe
Udało mu się zwrócić wszystkie wersje „dxdiag.exe”, ponieważ „.exe” jest jednym z rozszerzeń zmiennej PATHEXT. (Uwaga: „GDZIE dxdiag” również działałoby, ponieważ C: \ Windows \ System32 znajduje się w zmiennej PATH.)
WHERE /R C:\Windows dxdiagn
z drugiej strony nie zwraca żadnego wyniku, ponieważ „.dll” nie znajduje się w PATHEXT.
W takim przypadku spójrz na wynik dodania symbolu wieloznacznego:
WHERE /R C:\Windows dxdiagn*
C:\Windows\System32\dxdiagn.dll
C:\Windows\System32\en-US\dxdiagn.dll.mui
C:\Windows\SysWOW64\dxdiagn.dll
C:\Windows\SysWOW64\en-US\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_daccd04369b09c70\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiagn.dll
C:\Windows\WinSxS\x86_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_7eae34bfb1532b3a\dxdiagn.dll.mui
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiagn.dll
Z powodzeniem zwraca wszystkie wersje dxdiagn.dll.
Aby uzyskać więcej informacji, użyj „GDZIE /?”. Mam nadzieję że to pomoże!