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