Kann jemand den Speicherort einer Datei ermitteln, die sich in einem der von der PATH-Umgebungsvariablen angegebenen Ordner befindet, anstatt ein Verzeichnis namens filename.exe / s aus dem Stammordner zu erstellen?
Ich weiß, dass dies die Grenzen einer Programmierfrage sprengt, aber das ist nützlich für deployment-bezogene Probleme, ich muss auch die Abhängigkeiten einer ausführbaren Datei untersuchen. : -)
Für Windows NT-basierte Systeme:
%Vor% Ersetzen Sie file
durch den Namen der Datei, nach der Sie suchen.
Wenn Sie die Datei auf API-Ebene suchen möchten, können Sie PathFindOnPath verwenden . Es hat den zusätzlichen Vorteil, dass Sie zusätzliche Verzeichnisse angeben können, falls Sie an zusätzlichen Orten suchen möchten, außer nur dem System oder dem aktuellen Benutzerpfad.
Unter Windows würde ich sagen: %WINDIR%\system32\where.exe
Ihr Fragen-Titel spezifiziert keine Fenster, also stelle ich mir vor, dass einige Leute diese Frage mit einem Posix-Betriebssystem auf der Suche nach dem gleichen suchen (wie ich).
Dieses PHP-Snippet könnte ihnen helfen:
%Vor%Dies ist ein leicht geänderter Produktionscode, den ich auf mehreren Servern laufe. (d. h. aus dem OO-Kontext herausgenommen und der Kürze halber einige Hygiene- und Fehlerüberprüfungen überlassen.)
Zusätzlich zu den Dienstprogrammen 'what' (MS Windows) und 'where' (unix / linux) habe ich mein eigenes Dienstprogramm geschrieben, das ich 'findinpath' nenne. Zusätzlich zur Suche nach der ausführbaren Datei, die an den Befehlszeilen-Interpreter (CLI) übergeben wird, werden alle Übereinstimmungen und die zurückgegebene Pfadsuchreihenfolge gefunden, so dass Sie Probleme mit der Pfadreihenfolge finden können. Darüber hinaus gibt mein Dienstprogramm nicht nur ausführbare Dateien zurück, sondern jede Dateispezifikationsübereinstimmung, um die Zeiten abzufangen, zu denen eine gewünschte Datei nicht ausführbar ist.
Ich fügte auch eine Funktion hinzu, die sich als sehr geschickt herausgestellt hat; Das Flag -s gibt an, dass nicht nur der Systempfad, sondern alles auf der Systemfestplatte gesucht werden soll, wobei bekannte Benutzerverzeichnisse ausgeschlossen sind. Ich habe festgestellt, dass diese Funktion in Systemverwaltungsaufgaben unglaublich nützlich ist ...
Hier ist die Ausgabe 'usage':
%Vor%Das Schreiben eines solchen Hilfsprogramms ist nicht schwer und ich überlasse es dem Leser als Übung. Oder, wenn Sie hier gefragt werden, werde ich mein Skript veröffentlichen - es ist in 'Bash'.
nur für Kicks, hier ist eine One-Liner Powershell-Implementierung
%Vor%Tags und Links windows