Я бы попробовал следующую строку:
for %a in (.) do title %~na
Или в командном файле вы бы %
однажды избежали s:
for %%a in (.) do title %%~na
for...do
Петля только там, чтобы получить текущий путь в переменную, так как вы не можете использовать ~
оператор с переменными окружения, как ( %cd%
).
Однако, как вы заметили, это не сработает для «Командной строки здесь», так как она выполняется до того, как каталог установлен.
Чтобы обойти это, вам, по сути, придется изменять вызываемую командную строку всякий раз, когда вы используете эту функциональность.
Это контролируется двумя переменными в Реестре, обе являются подключами HKEY_CLASSES_ROOT\Directory
:
HKEY_CLASSES_ROOT\Directory\shell\cmd\command
: Этот ключ определяет команду, которая будет запущена, когда вы Shift+ щелкнете правой кнопкой мыши значок каталога / папки.
HKEY_CLASSES_ROOT\Directory\Background\shell\cmd\command
: Этот ключ определяет команду, которая будет запущена, когда вы shiftщелкнете правой кнопкой мыши где-нибудь в открытом окне проводника.
По умолчанию оба эти значения по умолчанию установлены на cmd.exe /s /k pushd "%V"
, что откроет окно команд и изменит каталог на параметр, переданный как %V
.
Таким образом, чтобы это работало, вам нужно отредактировать эти два значения по умолчанию и добавить команду сверху, слегка измененную. Просто установите оба значения по умолчанию на это:
cmd.exe /s /k "pushd ""%V"" && for %%A in (%V) do @title %%~nA"
Обратите внимание на двойные кавычки, чтобы правильно их избежать, поскольку все заключено в одной паре котировок в группе все для cmd.exe «s /k
параметра. Команда @
там скрывает команду от показа внутри окна команд.
Это работает для меня, но есть одна маленькая причуда: если имя вашего каталога содержит более одной точки, например one.two.three
, это будет называть one.two
только заголовок .
Также имейте в виду, что название не будет обновляться, когда вы CD в другой каталог. Заставить это работать было бы немного сложнее (или, возможно, даже невозможно; не пытался).