
Подумал, что посмотрю, есть ли у кого-нибудь указания по следующей ситуации. Я настраивал командную строку под свои нужды и недавно изменил приглашение для своего пользователя. Вместо того, чтобы отображать путь в приглашении, я бы хотел, чтобы это всегда был заголовок окна.
Я поместил новый ключ реестра в
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor/AutoRun
со значением
title %cd%
Этот скрипт запускается каждый раз при запуске командной строки. Это работает. Всякий раз, когда я открываю командную строку через ярлык, это работает правильно.
Однако всякий раз, когда я открываю командную строку через правый клик -> Open Command Prompt Here, это, по-видимому, не выполняется. Я попытался посмотреть на команду оболочки для открытия здесь, расположенную по адресу
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"
Есть какие-нибудь указания?
решение1
Вы были довольно близки к решению. Для меня работает следующая команда:
cmd.exe /s /k "pushd ""%V"" & title %V"
EDIT: В реестре есть несколько мест, поддерживающих расширение оболочки "Command Prompt Here". Чтобы это изменение работало согласованно во всех объектах (каталогах, дисках и специальных папках), вам нужно выполнить поиск в реестре на предмет всех вхождений cmd.exe /s /k pushd "%V"
и заменить их значением, указанным выше.
решение2
Попробуйте этот сайт, эти ребята действительно помогают. У них есть разбивка всех переключателей.
И НЕТ, я не имею никакого отношения к этому сайту, я просто пытаюсь быть полезным. Эти ребята, а также сайт 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.
Для обработки символов кавычек (") используется следующая логика:
- Если выполнены все следующие условия, то символы кавычек в командной строке сохраняются:
- Нет переключателя /S (удалить кавычки)
- Ровно два символа кавычек
- Никаких специальных символов между двумя символами кавычек, где специальный — это один из следующих символов: & < >( ) @ ^ |
- Между двумя кавычками есть один или несколько пробельных символов.
- Строка между двумя кавычками — это имя исполняемого файла.
- В противном случае старое поведение заключается в том, чтобы проверить, является ли первый символ символом кавычки, и если это так, удалить начальный символ и последний символ кавычки в командной строке, сохранив любой текст после последнего символа кавычки. Чтобы отменить это поведение, используйте двойной набор кавычек "" в начале и конце командной строки. Полный экран Комбинация клавиш ALT + ENTER переключит окно CMD в полноэкранный режим. Нажмите ALT + ENTER еще раз, чтобы вернуться в обычное окно. Command.com против 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, выбрав ПУСК, ВЫПОЛНИТЬ, cmd, ОК Ключи реестра: ;Разрешить пути 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 здесь (администратор)» в контекстное меню ; папок файловой системы: [HKEY_CLASSES_ROOT\Directory\shell\runas]@="Открыть командную строку CMD здесь (администратор)" [HKEY_CLASSES_ROOT\Directory\shell\runas\command] @="cmd.exe /k pushd %L"
; Для Windows 7: Добавьте повышенный параметр «Открыть командную строку здесь (администратор)» в контекстное меню ; Мой компьютер: [HKEY_CLASSES_ROOT\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas] @="Открыть командную строку здесь (администратор)" [HKEY_CLASSES_ROOT\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}\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 завершит только один из пакетных скриптов. (см. также EXIT)
Длинные команды и длинные имена файлов В Windows XP командная строка CMD ограничена 8191 символом. Для всех версий Windows NTFS и FAT допускают имена путей длиной до 260 символов.
Обходной путь для ограниченной длины имени пути — префикс \?\,
например:
\?\C:\TEMP\Long_Directory\Long_Filename.txt
ErrorLevel
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"
Пробелы в Program Path:
CMD /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
Пробелы в Program Path + параметры:
CMD /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
Пробелы в Program Path + параметры с пробелами:
CMD /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
Запустите Demo1, а затем Launch 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)