BEARBEITEN: Ich hätte hinzufügen sollen: Wenn Sie den WHERE-Befehl von der Befehlseingabe aus nicht verwenden können, überprüfen Sie Ihre PATH-Variable. (Verwenden Sie einfach den Befehl “path”.) Stellen Sie sicher, dass C:\Windows\System32 in Ihrem Pfad steht. Dort befindet sich “where.exe”.
WHERE ist der Befehl, nach dem Sie suchen! WHERE ist wie eine Kreuzung zwischen dem in der UNIX-Shell eingebauten “which”-Befehl und dem “locate”-Befehl, da er sowohl für ausführbare Befehlsdateien als auch für normale Dateien funktioniert.
Es ist auch etwas komplexer als einer der beiden, obwohl im allgemeinen ein einfacher
WHERE <file>
funktioniert. Stattdessen wird standardmäßig an zwei Stellen nach Dateien gesucht:
- Das aktuelle Verzeichnis.
- Alle Verzeichnisse in der PATH-Variablen.
Jeder Befehl, den Sie direkt von einer Eingabeaufforderung aus ausführen können, ohne das Verzeichnis anzugeben, wird also durch den WHERE-Befehl gefunden. (Weil ein solcher Befehl bereits in der Liste der Variablen PATH enthalten ist.)
Wenn Sie nur in der Befehlspfad-Variablen suchen möchten, können Sie verwenden:
WHERE "$path:<search text>"
Wenn Sie dagegen alle Kopien einer Datei in einem Verzeichnisbaum finden möchten, können Sie verwenden:
WHERE /R <Top Level Directory> <search text>
Schließlich findet WHERE Befehle und alle Dateien mit einer Erweiterung aus der Variablen PATHEXT, ohne die Erweiterung mit einzubeziehen. Alle anderen Dateien müssen entweder genau oder mit Platzhaltern angegeben werden.
Nehmen Sie zum Beispiel die Dateien “dxdiag.exe” und “dxdiagn.dll”. Beachten Sie den folgenden Befehl und seine Ausgabe:
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
Es gelingt, alle Versionen von “dxdiag.exe” zurückzugeben, da “.exe” eine der Erweiterungen in der Variablen PATHEXT ist. (Hinweis: “WHERE dxdiag” hätte auch funktioniert, weil C:\Windows\System32 in der PATH-Variable steht.)
WHERE /R C:\Windows dxdiagn
hingegen gibt kein Ergebnis zurück, weil “.dll” nicht in PATHEXT steht.
In diesem Fall sehen Sie sich das Ergebnis an, das das Hinzufügen eines Platzhalters ergibt:
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
Es gibt erfolgreich alle Versionen der dxdiagn.dll zurück.
Für weitere Informationen verwenden Sie “WHERE /? Hoffentlich hilft das!