Jak ustawić tytuł CMD na bieżący katalog roboczy w systemie Windows XP

18

W jaki sposób dynamicznie ustawia się tytuł wiersza polecenia (CMD) w systemie Windows XP do bieżącego katalogu roboczego? mogę użyć

title %CD%

jest to jednak poprawka tymczasowa, a tytuł pozostaje stały, gdy zmieniam katalog za pomocą polecenia CD.

Stormshadow
źródło
Co się stanie, gdy użyjesz pushdjednego z makr?
Cześć71,

Odpowiedzi:

20

Sprawił, że zadziałało dzięki makro doskey grawitacji. Użył && do połączenia poleceń cd i tytułu, co działa idealnie. Nawet ładowałem to makro za każdym razem, gdy używam cmd, modyfikując rejestr.

1) Utworzyłem plik nietoperza o nazwie cmd_title.bat i jego zawartość to

@echo off
title %cd%

2) Umieściłem ten plik na dysku C: (C: \ cmd_title.bat)

3) Utwórz inny plik wsadowy o nazwie cmd.bat na dysku C: o następującej zawartości

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

(flaga / d służy do przełączania na inny dysk za pomocą cd).

4) Następnie otwieramy regedit i przechodzimy do HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor . Tutaj jest klucz o nazwie AutoRun . Zmieniamy wartość tego klucza i ustawiamy go w lokalizacji pliku cmd.bat w cudzysłowach (np .: „C: \ cmd.bat”).

Teraz cd działa tak, jak chcemy za każdym razem, gdy otwieramy cmd.

Zasadniczo && służy do łączenia poleceń w systemie Windows

Stormshadow
źródło
Fajnie, mam twoje rozwiązanie do pracy. Ale straciłem funkcję „klawisz tabulacji, automatyczne dopasowanie”.
rok2791SWTS
Możliwe, że zaburzyłeś wartości CompletionChar / PathCompletionChar w kluczu HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor w rejestrze. Aby ustawić użycie klawisza tab do automatycznego uzupełniania, musisz ustawić wartości CompletionChar i PathCompletionChar na 0x9 (hex)
Stormshadow
+1 to działające rozwiązanie, ale z drobną korektą: AutoRun nie jest kluczem, ale wartością typu ciągu.
mloskot,
1
Fajne rozwiązanie! Możesz to zrobić również bez cmd_title.bat, jeśli zamiast tego wpiszesz makro:doskey cd=@echo off$Tcd /d $*$T@title ^%cd^%$Techo on
Superole,
1
Uważam, że @echo offnie jest konieczne, jeśli dodajesz @przed poleceniami, których echo nie chcesz. Uznałem również, że to polecenie jest bardziej przydatne, aby ustawić tytuł tylko bieżącą nazwę katalogu zamiast pełnej ścieżki@for %%* in (.) do @title %%~nx*
Bron Davies
5

Myślę, że pushd i popd są znacznie bardziej użyteczne niż cd, i przydałoby się o wiele więcej, gdyby szybciej pisały. Rozwiązałem problemy z cd vs. pushd / popd i tytułem katalogu okna konsoli za pomocą następującego skryptu, który nazywam d.bat, który jest na mojej ścieżce.

@ 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
źródło
2

Możesz zmienić tytuł wiersza polecenia, używając titlepolecenia.

Możesz utworzyć plik wsadowy (powiedzmy mycd.bat) zawierający:

title "%1"
cd  "%1"

i użyj go zamiast „cd”:

mycd "newdir"

Możesz także umieścić plik .bat w systemie32, jeśli chcesz, aby zawsze był dostępny.

harrymc
źródło
4
Lepszym rozwiązaniem byłoby użycie makr:doskey cd=cd $* ^&^& title $*
user1686
@grawity: Dobry pomysł.
harrymc
1

Nie możesz, przynajmniej nie przy użyciu powłoki Windows.


Możliwe, że można dodać sekwencje specjalne „ustaw tytuł Xterm” %PROMPT%, ale potrzebny byłby inny emulator terminala (być może PuTTYcyg lub coś z SfU), ponieważ Windows Console nie obsługuje sekwencji specjalnych.

Możesz też znaleźć inną powłokę, która może używać funkcji konsoli Windows do ustawiania tytułów.


Często są one mylone w kontekście Windows, więc ...

powłoka odczytuje i interpretuje dane wejściowe; cmd.exe, command.com,/bin/sh

terminal , emulator terminala , konsola wyświetla na ekranie programy tekstowe (w tym powłokę); Windows Console, xterm,PuTTYcyg

użytkownik1686
źródło
w rzeczywistości cmd.exe jest terminalem. explorer to powłoka.
Wieża
1
@Idigas: explorerjest powłoką GUI, cmd.exejest tekstową. (Pomyśl o tym: cmd.exejest dokładnym odpowiednikiem /bin/shw Uniksie i /bin/shzawsze jest nazywany „powłoką”. Podobnie, konsola Windows jest odpowiednikiem „emulatora terminala” w X11.)
user1686
Poprawiono mnie.
Gawron
1

Zakładając, że \ tools znajduje się na ścieżce i tam przechowujesz pliki wsadowe:

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

Masz teraz plik cdtitle.bat, który możesz wywołać z innego pliku wsadowego.

daveand
źródło
1

Utwórz plik: cd.bat i umieść tam następujące elementy:

cd %*  
title %CD%  

Następnie wydaj polecenie:

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

Zamień „...” na ścieżkę do cd.bat. Wypróbuj i przekonaj się, że to działa.

Aby ustawić tę trwałość, utwórz dosrc.cmd, umieść tam polecenie doskey, a następnie utwórz skrót cmd, kliknij go prawym przyciskiem myszy i wybierz właściwości.

Zmodyfikuj cel, aby był:

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

Ponownie zamień „...” na ścieżkę do dosrc.cmd

Następnie kliknij dwukrotnie skrót, powinieneś mieć funkcję cd.

Mauro
źródło