4

Думал, я посмотрю, есть ли у кого-нибудь указатели на следующую ситуацию. Я настраивал командную строку в соответствии со своими потребностями и недавно изменил приглашение для своего пользователя. Вместо того, чтобы отображать путь в приглашении, я бы хотел, чтобы он всегда был заголовком окна.

Я положил новый ключ реестра в

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor/AutoRun

со значением

title %cd% 

Этот скрипт запускается каждый раз, когда запускается командная строка. Это работает. Всякий раз, когда я открываю командную строку с помощью ярлыка, это действует правильно.

Однако всякий раз, когда я открываю командную строку с помощью щелчка правой кнопкой мыши -> Открыть командную строку, здесь это явно не выполняется. Я попытался посмотреть на команду оболочки для открытого здесь, расположенного в

HKEY_CLASSES_ROOT/Directory/shell/cmd/command

который по умолчанию установлен в:

cmd.exe /s /k pushd "%V"

Я попытался изменить это на:

cmd.exe /s /k "cd %1 & title %cd%"

"% 1" был предложен в других местах онлайн для скрипта open-here, и если я правильно понимаю, & должен выполнить обе команды. Тем не менее, он по-прежнему не работает каждый раз, когда я открываю командную строку здесь. Рабочий каталог действительно правильный, заголовок окна по-прежнему "C:\Windows\System32"

Есть указатели?

2 ответа2

4

Вы были довольно близки к решению. У меня работает следующая команда:

cmd.exe /s /k "pushd ""%V"" & title %V"

РЕДАКТИРОВАТЬ: Есть несколько мест в реестре, поддерживающих расширение оболочки "Командная строка здесь". Чтобы это изменение работало согласованно для всех объектов (каталогов, дисков и специальных папок), необходимо выполнить поиск в реестре всех вхождений cmd.exe /s /k pushd "%V" и заменить их указанным выше значением.

-1

Попробуйте этот сайт, эти парни действительно полезны. У них есть поломка всех выключателей.

http://ss64.com/nt/cmd.html

И НЕТ, я не имею никакого отношения к этому сайту, я просто пытаюсь помочь. Эти ребята, а также сайт SuperUser.com помогли мне сотни раз.

CMD.exe Запустите новую оболочку CMD и (необязательно) запустите командную / исполняемую программу.

Syntax
      CMD [charset] [options]
      CMD [charset] [options] [/c Command] 
      CMD [charset] [options] [/k Command] 

Options   
   /C     Run Command and then terminate
   /K     Run Command and then return to the CMD prompt.
          This is useful for testing, to examine variables

   Command : The command, program or batch script to be run.
             This can even be several commands separated with '&' 
             (the whole should also be surrounded by "quotes")

   /T:fg  Sets the foreground/background colours 
   /X     Enable extensions to CMD.EXE
   /Y     Disable extensions to CMD.EXE 
   /A     Output ANSI characters
   /U     Output UNICODE characters (UCS-2 le)
          These options will affect piping or redirecting to a file.
          Most common text files are ANSI, use these switches
          when you need to convert the character set.
   /D Ignore registry AutoRun commands
      HKLM | HKCU \Software\Microsoft\Command Processor\AutoRun
   /F:ON Enable auto-completion of pathnames entered at the CMD prompt
   /F:OFF Disable auto-completion of pathnames entered at the CMD prompt (default)At the command prompt Ctrl-D gives folder name completion and Ctrl-F gives File and folder name completion.

These key-strokes will display the first matching path. Thereafter, repeated pressing of the same control key will cycle through the list of matching paths. Pressing SHIFT with the control key will move through the list backwards. 
   /Q    Turn echo off
   /S    Strip quote characters from the command_line
   /V:ON Enable delayed environment variable expansion 
         this allows a FOR loop to specify !variable! instead of %variable% 
         expanding the variable at execution time instead of at input time. 
   /V:OFF Disable delayed environment expansion.

   Environment expansion preference can be set permanently in the registry
   HKLM | HKCU  \Software\Microsoft\Command Processor\DelayedExpansion
   Set to either 0x1 or 0x0

   /knetdiag /debug 
   /knetdiag /fix

   The knetdiag switches are undocumented and work in XP only
   they list and (may) fix these networking issues.If /C or /K is specified, then the remainder of the command line is processed as an immediate command in the new shell. Multiple commands separated by the command separator '&' or '&&' are accepted if surrounded by quotes.

Следующая логика используется для обработки символов кавычки ("):

  1. Если выполнены все следующие условия, символы кавычек в командной строке сохраняются:
    • Переключатель No /S (Газовые кавычки)
    • Ровно две кавычки
    • Никаких специальных символов между двумя символами кавычек, где специальным является один из: & <> () @ ^ |
    • Между двумя символами кавычек есть один или несколько пробельных символов
    • Строка между двумя кавычками - это имя исполняемого файла.
  2. В противном случае старое поведение состоит в том, чтобы увидеть, является ли первый символ символом кавычки, и если это так, убрать начальный символ и удалить последний символ кавычки в командной строке, сохранив любой текст после последнего символа кавычки. Чтобы отрицать это поведение, используйте двойной набор кавычек "" в начале и конце командной строки. Полноэкранный режим Комбинация клавиш ALT + ENTER переключит окно CMD в полноэкранный режим. нажмите ALT + ENTER еще раз, чтобы вернуться к обычному окну. Command.com vs CMD.exe Все команды на этих страницах предполагают, что вы используете 32-битную или 64-битную командную строку (cmd.exe)

Старый 16-битный процессор команд command.com поставляется для обеспечения обратной совместимости для 16-битных приложений DOS. Command.com имеет очень ограниченную функциональность по сравнению с cmd.exe, например, после многих команд он не сможет установить% errorlevel%.

Если вы называете свои пакетные сценарии с расширением.CMD, а не.BAT, то они не будут работать под command.com, даже если они скопированы на компьютер с Windows 95.

Переменная среды% COMSPEC% будет отображаться, если вы используете CMD.EXE или command.com

Одно ключевое различие между.CMD и др.Сценарии BAT (работающие под CMD.EXE) состоят в том, что при включенных расширениях такие команды, как PATH/APPEND/PROMPT/SET/ASSOC, сбрасывают ERRORLEVEL в 0, если они выполняются успешно. В старом стиле.BAT-файл, ERRORLEVEL не будет изменен, если не будет новой ошибки (источник). В 64-разрядных версиях Windows 32-разрядный файл CMD.exe находится по адресу% windir%\SysWoW64\cmd.exe. Чтобы уменьшить проблемы совместимости, подсистема WOW64 изолирует 32-разрядные двоичные файлы от 64-разрядных, перенаправляя вызовы реестра и некоторые из них. вызовы файловой системы. Открытие CMD из проводника Windows Вы можете открыть новое приглашение CMD, выбрав START, RUN, cmd, OK. Ключи реестра:; Разрешить UNC-пути в командной строке [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor] "DisableUNCCheck" = dword:00000001

; Запустите команду при запуске CMD.exe [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "AutoRun" = -

; Активировать автоматическое завершение [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] "CompletionChar" = 0x9

; Для Windows 7: добавьте повышенную опцию «Открыть приглашение CMD здесь (Admin)» к; контекстное меню для папок файловой системы: [HKEY_CLASSES_ROOT\Directory\shell\runas] @ = "Открыть приглашение CMD здесь (Admin)" [HKEY_CLASSES_ROOT\Directory\shell\runas\command] @ = "cmd.exe /k pushd% L"

; Для Windows 7: добавьте повышенную опцию «Открыть приглашение CMD здесь (Admin)» к; Контекстное меню «Мой компьютер»: [HKEY_CLASSES_ROOT\CLSID {20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas] @ = "Открыть приглашение CMD здесь (Администратор)" [HKEY_CLASSES_ROOT\CLSID {20D04FE0-3AEA-1069-A23088 088 098 088 9 30 8 8 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 08 сооб во - ных. }\shell\runas\command] @ = "cmd.exe" История предыдущих команд При нажатии стрелки ВВЕРХ отобразится список предыдущих команд, введенных в командной строке. Другие функциональные клавиши DOSKEY загружаются по умолчанию (F7, F8, F9). Копировать и вставить / QuickEdit. Чтобы упростить использование вырезания и вставки в командной строке, включите режим QuickEdit следующим образом: Активируйте меню управления в левом верхнем углу текущего В окне cmd перейдите на вкладку «Свойства», «Параметры», а затем установите флажок «Режим QuickEdit». Теперь вы можете выделить текст мышью и нажать Enter (или щелкнуть правой кнопкой мыши), чтобы скопировать его в буфер обмена. Вставьте куда угодно, используя Control+V (или щелчок правой кнопкой мыши) или через меню. ESC отменит любой выбор и вернется в режим редактирования. При копировании между окнами вам может понадобиться один клик для выбора окна и второй клик для вставки. Запустите несколько экземпляров CMD.exe. В командной строке или в пакетном сценарии CMD запустит новый экземпляр CMD.exe, который появится в том же окне. Команда EXIT закроет второй экземпляр CMD и вернется к предыдущей оболочке.

Метод вызова одного пакетного сценария из другого заключается в запуске такой команды, как CMD /c C:\docs\myscript.cmd

Вывод CMD может быть перенаправлен в текстовый файл. Обратите внимание, что там, где используется CMD /c, команда EXIT не требуется.

Переменная среды% CMDCMDLINE% развернется в исходную командную строку, переданную в CMD.EXE. Нативная версия CMD.exe всегда находится в% windir%\system32, в 64-разрядных операционных системах также есть 32-разрядный CMD.exe в% Windir%\SysWOW64

Приостановка или остановка пакетного сценария Выполнение любого пакетного сценария можно приостановить, нажав CTRL-S. Это также работает для приостановки одной команды, такой как список DIR. Нажатие любой клавиши возобновит операцию.

Выполнение любого пакетного сценария можно остановить нажатием CTRL-C

Если один пакетный файл ВЫЗЫВАЕТ другой пакетный файл, CTRL-C завершит работу обоих пакетных сценариев. Если CMD /c используется для вызова одного пакетного файла из другого, то CTRL-C вызовет завершение только одного из пакетных сценариев. (см. также ВЫХОД)

Длинные команды и длинные имена файлов В Windows XP командная строка CMD ограничена 8 191 символом. Для всех версий Windows NTFS и FAT допускают имена путей длиной до 260 символов.

Обходной путь для ограниченной длины пути состоит в том, чтобы префикс \?\
например:
\?\C: \TEMP \Long_Directory \Long_Filename.txt
Равен
CMD /C вернет уровень ошибки, например CMD /c dir Z: где диск Z: не существует, вернет% errorlevel% = 1 в вызывающую оболочку CMD.
Расширения команд
Большая часть функциональности CMD.exe может быть отключена - это повлияет на все внутренние команды, расширения команд включены по умолчанию. Это контролируется установкой значения в реестре: HKCU \Software \Microsoft \Command Processor \EnableExtensions В качестве альтернативы в Win XP вы можете запустить CMD /e: on или CMD /e: off
Примеры:
Запустите программу и передайте параметр Filename:
CMD /c write.exe c: \docs \sample.txt
Запустите программу и передайте длинное имя файла:
CMD /c write.exe "c: \sample documents \sample.txt"
Пробелы в программном пути:
CMD /c "" c: \Program Files \Microsoft Office \Office \Winword.exe ""
Пробелы в программе Path + параметры:
CMD /c "" c: \Program Files \demo.cmd "" Parameter1 Param2
Пробелы в пути к программе + параметры с пробелами:
CMD /k "" c: \batch files \demo.cmd "" Параметр 1 с пробелом "" Параметр2 с пробелом ""
Запустите Demo1, а затем запустите Demo2:
CMD /c "" c: \Program Files \demo1.cmd "&" c: \Program Files \demo2.cmd ""
«Те, кто может командовать собой, командовать другими» - Хазлитт

Связанные с:

EXIT - Используйте это, чтобы закрыть оболочку CMD и вернуться.
CALL - вызов одной пакетной программы из другой
START - запустить программу, команду или командный файл
DOSKEY Редактировать командную строку, вызывать команды
Q156276 - Cmd не поддерживает имена UNC в качестве текущего каталога
Powershell: вы можете запустить оболочку CMD в Powershell, Exit вернет вас к приглашению PS.
Эквивалентная команда bash (Linux): bash - запустить оболочку bash (также csh, ksh, sh)

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