Як встановити назву CMD для поточної робочої Директорії в Windows XP


18

Як динамічно встановлювати заголовок командного рядка (CMD) у Windows XP поточній робочій директорії? Я можу використовувати

title %CD%

однак це тимчасове виправлення, а заголовок залишається виправленим, коли я змінюю каталог за допомогою команди CD.


Ну, що станеться, коли ви користуєтесь pushdодним із макросів?
Привіт71

Відповіді:


20

Зробив це завдяки макіяжу доскеї гравітації. Він використовував && для комбінування команд 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
Superole

1
Я вважаю, що @echo offце не обов'язково, якщо ви просто додаєте @перед командами, які не хочете відлуння. Також мені здається, що ця команда корисніша для встановлення заголовка лише на поточну назву каталогів, а не на повний шлях@for %%* in (.) do @title %%~nx*
Bron Davies

5

Я думаю, що pushd і popd набагато корисніші, ніж CD, і вони побачать набагато більше користі, якби вони швидше набирали текст. Я вирішив проблеми cd vs. 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, якщо бажаєте, щоб він завжди був доступний.


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


насправді cmd.exe - це термінал. explorer - оболонка.
Грак

1
@Idigas: explorerоболонка GUI, cmd.exeце текстова. (Подумайте: cmd.exeце точний еквівалент /bin/shв Unix, і /bin/shйого завжди називають "оболонкою". Аналогічно, консоль Windows еквівалентна "термінальному емулятору" в X11.)
користувач1686

Я стою виправлений.
Грак

1

Якщо \

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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.