EDIT:Powinienem był dodać, jeśli nie możesz użyć polecenia WHERE z zachęty komend, sprawdź swoją zmienną PATH. (Po prostu użyj polecenia “ścieżka”.) Upewnij się, że C:\Windows\System32 jest w twojej ścieżce. Tam właśnie znajduje się polecenie “where.exe”.
WHERE jest poleceniem, którego szukasz! WHERE is like a cross between the UNIX shell built-in “which” and the “locate” command, in that it works for both command executables and regular files.
It’s also somewhat more complex than either of those two, although, in general a simple
WHERE <file>
It’s different from the “locate” command in that it’s not looking through the entire filesystem. Zamiast tego, domyślnym zachowaniem jest szukanie 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 poleceń bez określania katalogu, zostanie znalezione przez polecenie WHERE. (Ponieważ każde takie polecenie znajduje się już na liście zmiennych PATH)
Jeśli chcesz wyszukać tylko w zmiennej ścieżki poleceń, możesz użyć:
WHERE "$path:<search text>"
Jeśli natomiast chcesz znaleźć wszystkie kopie pliku w drzewie katalogów, możesz użyć:
WHERE /R <Top Level Directory> <search text>
Na koniec, WHERE znajdzie polecenia i wszelkie pliki z rozszerzeniem ze zmiennej PATHEXT bez podania rozszerzenia. Wszystkie inne pliki muszą być określone albo dokładnie, albo za pomocą znaków wieloznacznych.
Weźmy na przykład pliki “dxdiag.exe” i “dxdiagn.dll”. Zauważ następujące polecenie i jego wyjście:
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
Udaje mu się zwrócić wszystkie wersje “dxdiag.exe”, ponieważ “.exe” jest jednym z rozszerzeń zmiennej PATHEXT. (Uwaga: “WHERE dxdiag” would have worked as well, because C:\Windows\System32 is in the PATH variable.)
WHERE /R C:\Windows dxdiagn
on the other hand, fails to return any result, because “.dll” is not in PATHEXT.
W tym przypadku, spójrz na wynik, który dodanie symbolu wieloznacznego daje nam:
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 “WHERE /?”. Mam nadzieję, że to pomoże!