EDIT: Я повинен був би додати, якщо ви не можете використовувати команду WHERE з командного рядка, перевірте свою змінну PATH. (Просто скористайтеся командою "path".) Переконайтеся, що на вашому шляху стоїть C: \ Windows \ System32. Ось тут і знаходиться "where.exe".
ДЕ команда, яку ви шукаєте! WHERE - це як перехрес між вбудованою оболонкою UNIX "that" та командою "locate", оскільки вона працює як для виконуваних команд, так і для звичайних файлів.
Це також дещо складніше, ніж будь-яке з цих двох, хоча, загалом, просте
WHERE <file>
буду працювати.
Він відрізняється від команди "locate" тим, що не переглядає всю файлову систему. Натомість поведінка за замовчуванням полягає у пошуку файлів у двох місцях:
- Поточний каталог.
- Усі каталоги в змінній PATH.
Отже, будь-яка команда, яку можна запустити безпосередньо з командного рядка, не вказуючи каталог, знайдеться командою WHERE. (Тому що будь-яка така команда вже є у списку змінних PATH.)
Якщо ви хочете шукати лише в змінній командного шляху, ви можете використовувати:
WHERE "$path:<search text>"
Якщо, з іншого боку, ви хочете знайти всі копії файлу в дереві каталогів, ви можете використовувати:
WHERE /R <Top Level Directory> <search text>
Нарешті, WHERE знайде команди та будь-які файли із розширенням зі змінної PATHEXT без включення розширення. Усі інші файли повинні бути вказані або точно, або з підстановкою.
Візьмемо для прикладу файли "dxdiag.exe" і "dxdiagn.dll". Зверніть увагу на таку команду та її вихід:
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
Йому вдається повернути всі версії "dxdiag.exe", оскільки ".exe" - це одне з розширень змінної PATHEXT. (Примітка: "WHERE dxdiag" також працював би, оскільки C: \ Windows \ System32 знаходиться в змінній PATH.)
WHERE /R C:\Windows dxdiagn
з іншого боку, не повертає жодного результату, оскільки ".dll" відсутній у PATHEXT.
У цьому випадку подивіться на результат, який додає нам підстановку:
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
Він успішно повертає всі версії dxdiagn.dll.
Для отримання додаткової інформації використовуйте "ДЕ /?". Сподіваюся, це допомагає!