Как установить заголовок CMD для текущего рабочего каталога в Windows XP

18

Как динамически установить заголовок командной строки (CMD) в Windows XP на текущий рабочий каталог? я могу использовать

title %CD%

однако это временное исправление, и заголовок остается неизменным, когда я меняю каталог с помощью команды CD.

Сторм Шэдоу
источник
Что происходит, когда вы используете pushdодин из макросов?
Привет71

Ответы:

20

Получил это работать благодаря макросу Doskey гравитации. Он использовал && для объединения команд cd и title, что прекрасно работает. Я даже заставлял этот макрос загружаться каждый раз, когда использую cmd, настраивая реестр.

1) Я создал bat-файл с именем cmd_title.bat и его содержимое

@echo off
title %cd%

2) Я поместил этот файл на диск C: (C: \ cmd_title.bat).

3) Создайте еще один командный файл с именем cmd.bat на диске C: со следующим содержимым

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

(флаг / d предназначен для использования cd для переключения на другой диск).

4) Затем мы открываем regedit и переходим в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor . Здесь есть ключ под названием AutoRun . Мы изменяем значение этого ключа и устанавливаем его в местоположение файла cmd.bat в кавычках (например: «C: \ cmd.bat»).

Теперь CD работает так, как мы хотим каждый раз, когда мы открываем CMD.

В основном && используется для объединения команд в Windows

Сторм Шэдоу
источник
Круто, я получил ваше решение на работу. Но я потерял свою функциональность "клавиша нажатия клавиши, автоматическое совпадение".
rok2791SWTS
Возможно, вы нарушили значения CompletionChar / PathCompletionChar в ключе HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Command Processor в реестре. Чтобы настроить использование клавиши табуляции для автозаполнения, вам нужно установить значения CompletionChar и PathCompletionChar в 0x9 (шестнадцатеричное)
Stormshadow
+1 это рабочее решение, но с небольшим исправлением: AutoRun - это не ключ, а значение типа строки.
mloskot
1
Отличное решение! Вы также можете сделать это без cmd_title.bat, если вместо этого doskey cd=@echo off$Tcd /d $*$T@title ^%cd^%$Techo on
наберете
1
Я считаю, @echo offчто нет необходимости, если вы просто добавляете @перед командами, которые вы не хотите отражать. Я также нашел эту команду более полезной, чтобы установить в качестве заголовка только текущее имя каталога, а не полный путь@for %%* in (.) do @title %%~nx*
Брон Дэвис
5

Я думаю, что pushd и popd гораздо более полезны, чем cd, и увидели бы гораздо больше пользы, если бы они быстрее печатали. Я решил проблемы cd и pushd / popd и заголовка каталога консоли с помощью следующего скрипта, который я называю d.bat, который находится в моем пути.

@ 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

Вы можете изменить заголовок командной строки с помощью titleкоманды.

Вы можете создать пакетный файл (скажем, mycd.bat), содержащий:

title "%1"
cd  "%1"

и используйте его вместо "cd":

mycd "newdir"

Вы также можете поместить файл .bat в system32, если хотите, чтобы он всегда был доступен.

harrymc
источник
4
Лучше всего использовать макросы:doskey cd=cd $* ^&^& title $*
user1686
@ Grawity: Хорошая идея.
harrymc
1

Вы не можете, по крайней мере, не с оболочкой Windows.


Это может быть возможным , чтобы добавить «набор заголовков Xterm» управляющие последовательности для %PROMPT%, но вам потребуется другой эмулятор терминала (возможно PuTTYcyg или что - то из СФУ), а консоль для Windows не поддерживает управляющие последовательности.

Кроме того, найдите другую оболочку, которая может использовать функции консоли Windows для установки заголовков.


Они часто путаются в контексте Windows, так что ...

оболочка читает и интерпретирует ввод; cmd.exe, command.com,/bin/sh

терминал , эмулятор терминала , консоль выводит на экран текстовые программы (включая оболочку); Windows Console, xterm,PuTTYcyg

user1686
источник
на самом деле cmd.exe - это терминал. Исследователь это оболочка.
Ладья
1
@Idigas: explorerоболочка с графическим интерфейсом, cmd.exeтекстовая. (Подумайте об этом: cmd.exeэто точный эквивалент /bin/shв Unix и /bin/shвсегда называется «оболочкой». Аналогично, консоль Windows эквивалентна «эмулятору терминала» в X11.)
user1686
Я стою исправлено.
Ладья
1

Предполагая, что \ tools находится в пути, и именно там вы храните свои командные файлы:

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

Теперь у вас есть сообщение, cdtitle.batкоторое вы можете вызвать из другого командного файла.

daveand
источник
1

Создайте файл: cd.bat и поместите туда следующее:

cd %*  
title %CD%  

Затем выполните эту команду:

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

Замените "..." на путь к cd.bat. Попробуйте и убедитесь, что это работает.

Чтобы создать этот перманентный ish, создайте dosrc.cmd, поместите туда команду doskey, а затем создайте ярлык cmd, щелкните его правой кнопкой мыши и выберите свойства.

Изменить цель, чтобы быть:

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

Снова замените "..." на путь к dosrc.cmd

Затем дважды щелкните по ярлыку, у вас должна быть функциональность CD.

Mauro
источник