Festlegen des Titels der CMD auf das aktuelle Arbeitsverzeichnis in Windows XP

18

Wie setzt man den Titel der Eingabeaufforderung (CMD) in Windows XP dynamisch auf das aktuelle Arbeitsverzeichnis? ich kann nutzen

title %CD%

Dies ist jedoch eine vorübergehende Korrektur, und der Titel bleibt unverändert, wenn ich das Verzeichnis mit dem CD-Befehl ändere.

Sturmschatten
quelle
Was passiert, wenn Sie pushdeines der Makros verwenden?
Hallo71

Antworten:

20

Dank des Doskey-Makros von gravvity hat es funktioniert. Er hat && benutzt, um die Befehle cd und title zu kombinieren, was perfekt funktioniert. Ich habe dieses Makro sogar jedes Mal geladen, wenn ich cmd verwende, indem ich die Registrierung angepasst habe.

1) Ich habe eine Fledermausdatei mit dem Namen cmd_title.bat erstellt und der Inhalt lautet

@echo off
title %cd%

2) Ich habe diese Datei im Laufwerk C: abgelegt (C: \ cmd_title.bat)

3) Erstellen Sie im Laufwerk C: eine weitere Batch-Datei mit dem Namen cmd.bat mit folgendem Inhalt

doskey cd = cd /d $* ^&^& "C:\cmd_title.bat"
title %cd%

(Mit dem Flag / d können Sie mit cd zu einem anderen Laufwerk wechseln.)

4) Dann öffnen wir regedit und gehen zu HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor . Hier gibt es einen Schlüssel namens AutoRun . Wir ändern den Wert dieses Schlüssels und setzen ihn in Anführungszeichen auf den Speicherort der Datei cmd.bat (z. B .: "C: \ cmd.bat").

Jetzt funktioniert cd bei jedem Öffnen von cmd wie gewünscht.

Grundsätzlich wird && für die Befehlsverkettung in Windows verwendet

Sturmschatten
quelle
Cool, ich habe deine Lösung zum Laufen gebracht. Aber ich habe meine Funktion "Tabulatortaste drücken, Auto-Match" verloren.
rok2791SWTS
Möglicherweise haben Sie die CompletionChar / PathCompletionChar-Werte im Schlüssel HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor in der Registrierung gestört. Um die Verwendung der Tabulatortaste für die automatische Vervollständigung festzulegen, müssen Sie die Werte CompletionChar und PathCompletionChar auf 0x9 (hex)
Stormshadow
+1 Es ist eine funktionierende Lösung, aber mit geringfügiger Korrektur: AutoRun ist kein Schlüssel, sondern ein Wert für den Typ der Zeichenfolge.
mloskot
1
Schöne lösung! Sie können auch auf die Datei cmd_title.bat verzichten, wenn Sie das Makro stattdessen folgendermaßen doskey cd=@echo off$Tcd /d $*$T@title ^%cd^%$Techo on
eingeben
1
Ich finde @echo offes nicht notwendig, wenn Sie nur @vor den Befehlen hinzufügen , die nicht wiederholt werden sollen. Ich fand diesen Befehl auch nützlicher, um den Titel nur auf den aktuellen Verzeichnisnamen anstatt auf den vollständigen Pfad zu setzen@for %%* in (.) do @title %%~nx*
Bron Davies
5

Ich denke, dass pushd und popd viel nützlicher sind als cd und viel nützlicher, wenn sie schneller zu tippen wären. Ich habe die Probleme von cd vs. pushd / popd und dem Titel des Konsolenfensters mit dem folgenden Skript behoben, das ich d.bat nenne und das sich in meinem Pfad befindet.

@ echo off
rem d.bat replaces CD, PUSHD, and POPD with one command that also changes the title
rem of the console window to tell the current directory. Invoked with no arg, the
rem title is updated. Use this after changing the directory by some other means.
rem The argument / invokes popd. Any other argument invokes pushd with that arg.

if not _%1 == _ ( 
    if _%1 == _/ (
        popd
    ) else (
        pushd %*
    )
)
title %CD%
David McCracken
quelle
2

Sie können den Titel der Eingabeaufforderung mithilfe des titleBefehls ändern .

Sie können eine Batch-Datei (z. B. mycd.bat) erstellen, die Folgendes enthält:

title "%1"
cd  "%1"

und benutze es anstelle von "cd":

mycd "newdir"

Sie können die .bat-Datei auch in system32 ablegen, wenn Sie möchten, dass sie immer verfügbar ist.

Harrymc
quelle
4
Die Verwendung von Makros wäre eine bessere Option:doskey cd=cd $* ^&^& title $*
Grawity
@grawity: Gute Idee.
Harrymc
1

Sie können nicht, zumindest nicht mit der Windows-Shell.


Möglicherweise können Sie Escape-Sequenzen zum Festlegen des XTM-Titels hinzufügen %PROMPT%, Sie benötigen jedoch einen anderen Terminal-Emulator (möglicherweise PuTTYcyg oder etwas von SfU), da die Windows-Konsole Escape-Sequenzen nicht unterstützt.

Alternativ finden Sie eine andere Shell, die die Windows-Konsolenfunktionen zum Festlegen von Titeln verwenden kann.


Diese werden häufig in Windows-Kontexten verwechselt, also ...

Shell liest und interpretiert Eingaben; cmd.exe, command.com,/bin/sh

Terminal , Terminalemulator und Konsole zeigen textbasierte Programme (einschließlich der Shell) auf Ihrem Bildschirm an. Windows Console, xterm,PuTTYcyg

Grawity
quelle
Tatsächlich ist cmd.exe ein Terminal. Der Entdecker ist eine Muschel.
Turm
1
@Idigas: explorerist eine GUI-Shell, die auf cmd.exeText basiert. (Denken Sie darüber nach: cmd.exe/bin/sh/bin/sh
Ist
Ich stehe korrigiert.
Turm
1

Angenommen, \ tools befindet sich im Pfad und hier speichern Sie Ihre Batch-Dateien:

copy con: \tools\titlecmd.txt

title ^Z

copy con: \tools\cdtitle.bat

cd>\tools\cd.txt

copy \tools\titlecmd.txt+\tools\cd.txt cdtitletmp.bat

call cdtitletmp

^Z

Sie haben jetzt eine cdtitle.bat, die Sie aus einer anderen Batch-Datei aufrufen können.

daveand
quelle
1

Erstellen Sie eine Datei: cd.bat und fügen Sie dort Folgendes ein:

cd %*  
title %CD%  

Dann geben Sie diesen Befehl ein:

doskey cd=...\cd.bat $*  

Ersetzen Sie "..." durch den Pfad zu cd.bat. Probieren Sie es aus und sehen Sie, dass es funktioniert.

Um dies dauerhaft zu machen, erstellen Sie dosrc.cmd, geben Sie den Befehl doskey ein, erstellen Sie eine cmd-Verknüpfung, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften aus.

Ändern Sie das Ziel auf:

%windir%\system32\cmd.exe /K ...\dosrc.cmd  

Ersetzen Sie erneut "..." durch den Pfad zu dosrc.cmd

Dann doppelklicken Sie auf die Verknüpfung, Sie sollten die CD-Funktionalität haben.

Mauro
quelle