EDIT: Ik had moeten toevoegen, als je het commando WHERE van de commandoprompt niet kunt gebruiken, controleer dan je PATH-variabele. Gebruik gewoon het “pad” commando. Zorg ervoor dat C:Windows System32 op je pad staat. Dat is waar “where.exe” zich bevindt.
WHERE is het commando dat je zoekt! WERE is als een kruising tussen de ingebouwde UNIX-shell “welke” en het “lokaliseren” commando, in die zin dat het werkt voor zowel commando executables als gewone bestanden.
Het is ook iets complexer dan beide, hoewel, in het algemeen, een eenvoudige
WHERE <file>
zal werken.
Het is anders dan het “lokaliseren” commando in die zin dat het niet door het hele bestandssysteem kijkt. In plaats daarvan is het standaard gedrag om te zoeken naar bestanden op twee locaties:
- De huidige directory.
- Alle directories in de PATH-variabele.
Dus, elk commando dat je direct vanaf een commandoprompt kunt uitvoeren zonder de directory te specificeren, zal worden gevonden door het WHERE-commando. (Omdat zo'n commando al in de PATH-variabelenlijst staat.)
Als je alleen in de opdrachtpadvariabele wilt zoeken, kun je:
WHERE "$path:<search text>"
gebruiken Als je daarentegen alle kopieën van een bestand in een mappenstructuur wilt vinden, kun je:
WHERE /R <Top Level Directory> <search text>
gebruiken. Alle andere bestanden moeten precies of met jokertekens worden opgegeven.
Neem bijvoorbeeld de bestanden “dxdiag.exe” en “dxdiagn.dll”. Let op het volgende commando en de uitvoer ervan:
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
Het lukt om alle versies van “dxdiag.exe” terug te geven omdat “.exe” een van de extensies is in de PATHEXT-variabele. (Opmerking: “WERE dxdiag” zou ook hebben gewerkt, omdat C:\Windows\System32 in de PATH-variabele staat.)
WHERE /R C:\Windows dxdiagn
daarentegen, slaagt er niet in een resultaat terug te geven, omdat “.dll” niet in PATHEXT staat.
In dit geval, kijk naar het resultaat dat het toevoegen van een wildcard ons geeft:
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
Het geeft met succes alle versies van dxdiagn.dll.
voor meer informatie, gebruik “WHERE /?”. Ik hoop dat dit helpt!