Come impostare il titolo di CMD sulla directory di lavoro corrente in Windows XP


18

Come si imposta dinamicamente il titolo del prompt dei comandi (CMD) in Windows XP sulla directory di lavoro corrente? posso usare

title %CD%

tuttavia, questa è una correzione temporanea e il titolo rimane fisso quando cambio directory usando il comando CD.


Bene, cosa succede quando lo usi pushdcon una delle macro?
Hello71,

Risposte:


20

Ha funzionato grazie alla macro doskey gravvity. Ha usato && per combinare i comandi cd e title che funzionano perfettamente. Ho anche fatto caricare questa macro ogni volta che utilizzo cmd modificando il registro.

1) Ho creato un file bat chiamato cmd_title.bat e il suo contenuto è

@echo off
title %cd%

2) Ho inserito questo file nell'unità C: (C: \ cmd_title.bat)

3) Creare un altro file batch chiamato cmd.bat nell'unità C: con i seguenti contenuti

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

(il flag / d serve per usare cd per passare a un'altra unità).

4) Quindi apriamo regedit e andiamo a HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor . Qui c'è una chiave chiamata AutoRun . Modifichiamo il valore di questa chiave e lo impostiamo nella posizione del file cmd.bat tra virgolette (ad esempio: "C: \ cmd.bat").

Ora cd funziona come vogliamo ogni volta che apriamo cmd.

Fondamentalmente && viene utilizzato per il concatenamento dei comandi in Windows


Bene, ho trovato la tua soluzione al lavoro. Ma ho perso la mia funzionalità "tasto TAB, corrispondenza automatica".
rok2791SWTS,

Potresti aver disturbato i valori CompletionChar / PathCompletionChar nella chiave HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor nel registro. Per impostare utilizzare la chiave di tabulazione per il completamento automatico è necessario impostare i valori CompletionChar e PathCompletionChar su 0x9 (hex)
Stormshadow

+1 è una soluzione funzionante, ma con una correzione minore: AutoRun non è una chiave, ma valore del tipo di stringa.
mloskot,

1
Bella soluzione! Potresti anche farlo senza cmd_title.bat se invece digiti la macro in questo modo:doskey cd=@echo off$Tcd /d $*$T@title ^%cd^%$Techo on
Superole,

1
Trovo che @echo offnon sia necessario se aggiungi semplicemente @davanti ai comandi che non vuoi far risuonare. Ho anche trovato questo comando più utile per impostare il titolo solo sul nome della directory corrente anziché sul percorso completo@for %%* in (.) do @title %%~nx*
Bron Davies

5

Penso che pushd e popd siano molto più utili del cd e vedrebbero molto più uso se fossero più veloci da scrivere. Ho risolto i problemi di cd vs. pushd / popd e il titolo della directory della finestra della console con il seguente script, che chiamo d.bat, che è sul mio percorso.

@ 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%

2

È possibile modificare il titolo del prompt dei comandi utilizzando il titlecomando.

È possibile creare un file batch (ad esempio mycd.bat) contenente:

title "%1"
cd  "%1"

e usalo al posto di "cd":

mycd "newdir"

Puoi anche inserire il file .bat in system32 se desideri che sia sempre disponibile.


4
L'uso delle macro sarebbe un'opzione migliore:doskey cd=cd $* ^&^& title $*
user1686

@grawity: buona idea.
harrymc,

1

Non puoi, almeno non con la shell di Windows.


Si potrebbe essere possibile aggiungere "set di titolo di xterm" sequenze di escape per %PROMPT%, ma avrebbe bisogno di un emulatore di terminale diverso (forse PuTTYcyg o qualcosa da SFU), come console di Windows non supporta le sequenze di escape.

In alternativa, trova un'altra shell che può utilizzare le funzioni della console di Windows per impostare i titoli.


Questi sono spesso confusi in contesti Windows, quindi ...

la shell legge e interpreta l'input; cmd.exe, command.com,/bin/sh

terminale , emulatore di terminale , console visualizza sullo schermo programmi basati su testo (inclusa la shell); Windows Console, xterm,PuTTYcyg


in realtà cmd.exe è un terminale. explorer è una shell.
Rook,

1
@Idigas: explorerè una shell GUI, cmd.exeè di tipo testuale. (Pensaci: cmd.exeè l'esatto equivalente di /bin/shin Unix, ed /bin/shè sempre chiamato "la shell". Allo stesso modo, la console di Windows è equivalente a un "emulatore di terminale" in X11.)
user1686

Sono corretto.
Rook,

1

Supponendo che \ tools sia nel percorso, ed è dove si conservano i file batch:

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

Ora hai un cdtitle.batche puoi chiamare da un altro file batch.


1

Crea un file: cd.bat e inserisci quanto segue:

cd %*  
title %CD%  

Quindi emettere questo comando:

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

Sostituisci "..." con il percorso di cd.bat. Provalo e vedi che funziona.

Per rendere tale permanente-ish, crea dosrc.cmd, inserisci quel comando doskey e quindi crea un collegamento cmd, fai clic destro su di esso e seleziona le proprietà.

Modifica target per essere:

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

Ancora una volta, sostituisci "..." con il percorso di dosrc.cmd

Quindi fai doppio clic sul collegamento, dovresti avere la funzionalità cd.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.