18

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

title %CD%

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

6 ответов6

19

Получил это работать благодаря макросу 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

4

Я думаю, что 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, если хотите, чтобы он всегда был доступен.

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 который вы можете вызвать из другого командного файла.

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.

1

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


Возможно , можно добавить escape-последовательности "set Xterm title" в %PROMPT% , но вам потребуется другой эмулятор терминала (возможно, PuTTYcyg или что-то из SfU), поскольку консоль Windows не поддерживает escape-последовательности.

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


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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .