2010-11-24 2 views
0

Ich möchte den Standard-Befehlszeilenbefehl "CD" emulieren, um eine erweiterte Version zu erstellen, die zum Beispiel bietet eine Suchfunktion. Meine Forschung hat mich nicht zu einer Möglichkeit geführt, den aktuellen Verzeichnispfad einer Host-Shell zu ändern.Wie man einen Cmd Shell Befehl emuliert (dh "cd") und den Zustand der Eingabeaufforderung beim Beenden bewirkt

+0

Welches Betriebssystem verwenden Sie? –

+0

Diese Frage bezieht sich speziell auf die Windows-Plattform. – Freebooter

Antwort

1

Es ist ziemlich trüb, wie der CD-Befehl des Befehlsinterpreters irgendetwas tun würde, um eine "Suchfähigkeit" zu verbessern. Es ist nicht schwierig, mit dem richtigen CD-Verzeichnis zu beginnen. Verwenden Sie einfach CreateProcess, um cmd.exe zu starten. Mit dem Argument lpCurrentDirectory können Sie das aktuelle Verzeichnis festlegen. ShellExecuteEx() funktioniert auch, ein bisschen einfacher, richtig zu machen.

+0

Die Grundidee besteht darin, Platzhalter beim Verschieben in ein anderes Verzeichnis zuzulassen. Ein Beispiel könnte sein, von C: \ zu C: \ Programme mit einem Befehl wie "CX pr *" zu wechseln. Der Befehl durchsucht die Verzeichnisstruktur nach einer Übereinstimmung (sowohl nach oben als auch nach unten), bis eine Übereinstimmung gefunden wird. Übereinstimmungen würden dem Benutzer Aufforderungen zum Akzeptieren und Durchführen der Änderung bereitstellen. Ich habe CreateProcess() ausprobiert, aber es erzeugt ein neues Eingabeaufforderungsfenster mit dem korrekten Pfad, aber würde nicht für mich arbeiten. Ich habe einfache Dienstprogramme mit einer GUI gesehen, die eine Pfadauswahl bietet, die die Änderung so aussehen lässt, dass sie möglich ist. – Freebooter

+1

Ich habe keine Ahnung, wovon du sprichst. Drücken Sie einfach die TAB-Taste in einem Konsolenmodusfenster und es wird automatisch ein Dateinamenfragment kompiliert. –