Как я могу постоянно настраивать командную строку в Windows 7?

74

Я хотел бы изменить приглашение на $p$g$_$fпостоянное, но оно сбрасывается само при каждом повторном открытии командного окна.

Как я могу заставить его оставаться таким же навсегда?

oscilatingcretin
источник
9
Это интересный вопрос (+1), потому что в наши дни не так много людей, которые даже знают, что их приглашение для DOS можно настроить.
Рэндольф Ричардсон
14
Разве они не называются командными приглашениями сейчас?
LarsTech
3
@ LaRech: Да, DOS давно нет.
Гравитация
7
Старые привычки! Это всегда будет подсказкой DOS для меня.
колеблющийся
2
@Randolf: я конечно не знал! Заслуженно +1 к этому вопросу.
jprete

Ответы:

65

Создайте новую переменную среды с именем PROMPT. Установите значение переменной в желаемое приглашение.

введите описание изображения здесь

введите описание изображения здесь

Джон Т
источник
2
+1 За то, что единственный ответ упомянуть важную вещь в первом предложении. Как только кто-то узнает, что запрос, выдаваемый интерпретаторами команд, управляется переменной среды, остальное превращается в простое упражнение по применению универсального ответа SuperUser о переменных среды .
JdeBP
На самом деле, это не единственный ответ, чтобы упомянуть создание переменной PROMPT - мой ответ также упоминает об этом в шаге 4, который гласит: 4. Создайте переменную с именем «PROMPT» и вставьте желаемый текст подсказки (...)
Рэндольф Ричардсон
2
Технически в моем ответе упоминается и переменная Prompt, поскольку она предоставляет команду для ее установки. :)
EBGreen
4
Э.Б. Грин и Рэндольф Ричардсон, а как насчет " в первом предложении " ускользнуть от вас двоих?
JdeBP
71

В командной строке введите:

setx Prompt $p$g$_$f

Затем снова откройте командную строку.

Для тех, кто не знает, как получить справку по командам DOS / CMD, введите:

setx /?

Получить:

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

Parameter List:
    /S     system          Specifies the remote system to connect to.

    /U     [domain\]user   Specifies the user context under which
                           the command should execute.

    /P     [password]      Specifies the password for the given
                           user context. Prompts for input if omitted.

    var                    Specifies the environment variable to set.

    value                  Specifies a value to be assigned to the
                           environment variable.

    /K     regpath         Specifies that the variable is set based
                           on information from a registry key.
                           Path should be specified in the format of
                           hive\key\...\value. For example,
                           HKEY_LOCAL_MACHINE\System\CurrentControlSet\
                           Control\TimeZoneInformation\StandardName.

    /F     file            Specifies the filename of the text file
                           to use.

    /A     x,y             Specifies absolute file coordinates
                           (line X, item Y) as parameters to search
                           within the file.

    /R     x,y string      Specifies relative file coordinates with
                           respect to "string" as the search parameters.

    /M                     Specifies that the variable should be set in
                           the system wide (HKEY_LOCAL_MACHINE)
                           environment. The default is to set the
                           variable under the HKEY_CURRENT_USER
                           environment.

    /X                     Displays file contents with x,y coordinates.

    /D     delimiters      Specifies additional delimiters such as ","
                           or "\". The built-in delimiters are space,
                           tab, carriage return, and linefeed. Any
                           ASCII character can be used as an additional
                           delimiter. The maximum number of delimiters,
                           including the built-in delimiters, is 15.

    /?                     Displays this help message.

NOTE: 1) SETX writes variables to the master environment in the registry.

      2) On a local system, variables created or modified by this tool
         will be available in future command windows but not in the
         current CMD.exe command window.

      3) On a remote system, variables created or modified by this tool
         will be available at the next logon session.

      4) The valid Registry Key data types are REG_DWORD, REG_EXPAND_SZ,
         REG_SZ, REG_MULTI_SZ.

      5) Supported hives:  HKEY_LOCAL_MACHINE (HKLM),
         HKEY_CURRENT_USER (HKCU).

      6) Delimiters are case sensitive.

      7) REG_DWORD values are extracted from the registry in decimal
         format.

Examples:
    SETX MACHINE COMPAQ
    SETX MACHINE "COMPAQ COMPUTER" /M
    SETX MYPATH "%PATH%"
    SETX MYPATH ~PATH~
    SETX /S system /U user /P password  MACHINE COMPAQ
    SETX /S system /U user /P password MYPATH ^%PATH^%
    SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
         Control\TimeZoneInformation\StandardName
    SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
         NT\CurrentVersion\CurrentBuildNumber" /M
    SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE\
         System\CurrentControlSet\Control\TimeZoneInformation\
         StandardName
    SETX /S system /U user /P password  BUILD /K
         "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
         CurrentVersion\CurrentBuildNumber" /M
    SETX /F ipconfig.out /X
    SETX IPADDR /F ipconfig.out /A 5,11
    SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*."
    SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
    SETX /S system /U user /P password  /F c:\ipconfig.out /X
EBGreen
источник
1
Я тоже попробовал, и это сработало отлично. Я должен был отметить ответ другого парня, хотя ваш был более прямолинейным и точным. Он был первым, поэтому я должен был сделать то, что правильно. Я проголосовал за тебя, хотя.
колеблющийся
30
Мне все равно, кто помечен как ответ. Тем не менее, я укажу для дальнейшего использования (оставьте это как есть), что ключевым решением для пометки ответа является не тот, кто ответил первым, а какой ответ лучше. Хотя верно то, что пометка ответа хороша тем, что дает ответ, реальная причина пометить ответ состоит в том, чтобы помочь людям, которые позже найдут этот вопрос, быстрее найти лучшее решение. Поскольку в этом конкретном случае нет ничего плохого в другом решении, это не имеет значения.
EBGreen
1
Мне особенно нравится этот ответ (+1), потому что он показывает, что есть несколько способов сделать одно и то же ( что особенно подчеркивается в Perl [программирование] ).
Рэндольф Ричардсон
3
Я согласен, что это не о первом ответе. Вы оба ответили на мой базовый вопрос о том, как навсегда изменить подсказку. Когда два человека достигают одного и того же, запасной вариант - использовать первый ответ. Ваш был кратким и конкретным, рассматривая проблему «голых костей», в то время как его подход был более сложным, с переходом через пользовательский интерфейс, который предоставил больше возможностей в отношении переменных среды. Я тщательно взвесил варианты, прежде чем выбрать ответ.
колеблющийся
2
Было бы здорово расширить ваш ответ. В настоящее время отсутствует контекст. Пожалуйста, ознакомьтесь с нашим кратким руководством « Как ответить», чтобы узнать, как вы можете улучшить свой ответ. Итак, что setxименно делает и почему он продолжает сбрасывать себя?
Тамара Вийсман
21

Чтобы изменить внешний вид вашей подсказки DOS (или «Командная строка»), щелкните правой кнопкой мыши «Компьютер» (обычно на рабочем столе Windows или в меню «Пуск» Windows), затем выполните следующие действия:

  1. Нажмите на ярлык «Расширенные настройки системы»
  2. Нажмите кнопку «Переменные среды ...»
  3. Нажмите кнопку «Создать ...» («Пользовательская переменная» влияет только на вас, а «Системные переменные» влияет на всех пользователей)
  4. Создайте переменную с именем «PROMPT» и вставьте желаемый текст подсказки (как я добавил для вас на последнем рисунке ниже)
  5. Нажмите кнопку «ОК», чтобы закрыть окно «Переменные среды»
  6. Нажмите кнопку «ОК», чтобы закрыть окно «Свойства системы»

Это изменение также переживет перезагрузки.

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Рэндольф Ричардсон
источник
2
Мне нравится, как ты выделил, где нажимать на каждом изображении. Как ты этого добился?
Конерак
4
@Konerak: Спасибо! Я открыл каждое окно, нажал Alt-PrintScreen (чтобы скопировать текущее активное окно в буфер обмена), а затем вставил его в Adobe Photoshop. После этого я создал слой поверх (или перед) изображения, залил его на 100% черным, изменил непрозрачность слоя до 25% (что позволяет изображению постепенно исчезать на уровне 75%), затем я использовал инструмент Rectangular Marquee Tool с «пером 3 пикселя», чтобы выделить область для выделения, и нажал клавишу Delete (чтобы удалить из этого черного слоя). После этого я сохранил изображение в виде файла .PNG в своем каталоге C: / Temp / и загрузил его здесь.
Рэндольф Ричардсон
1
Я полный фотошоп нуб, но я понимаю, о чем ты говоришь! Я так попробую это в следующий раз, когда я представляю наше приложение нашим пользователям - намного приятнее, чем красные линии MS Paint по всему экрану. Спасибо!
Конерак
Snagit стоит меньше, чем в Photoshop, и дает вам много возможностей для работы с экранами. Это мое любимое занятие скринами.
EBGreen
Проголосовал за объяснение того, как добраться до переменных среды в Windows 7, и за объяснение того, как выделить изображение. Полезные штуковины, здесь!
CigarDoug
5

Отредактируйте команду меню или ссылку, которая запускает командную строку, измените ее цель, например.

%SystemRoot%\system32\cmd.exe /K "prompt $p$g$_$f"

И если требуется дополнительный пробел перед курсором:

%SystemRoot%\system32\cmd.exe /K "prompt $p$g$_$f "
Джей Джей Оки
источник
+1 за интересное и уникальное решение.
ArtOfWarfare
4

Windows поставляется с Windows PowerShell, который позволяет передавать по конвейеру среди других бывших функций только для Linux.

Вы можете запустить его, нажав кнопку «Пуск» и введя PowerShell, что дает вам три варианта. Нажмите PowerShell. Щелкните правой кнопкой мыши строку заголовка окна и выберите «Свойства». В открывшемся окне вы настраиваете параметры просмотра и поведения.

В противном случае вместо того, чтобы открывать PowerShell, в первую очередь выберите и щелкните модули PowerShell.

См. Документацию Microsoft о том, что вы можете сделать:

PS: я бы не рекомендовал классическую оболочку, если вы разрабатываете консольные приложения.

Лоренц Ло Зауэр
источник
+1 за другой хороший ответ. Мне особенно нравится термин «Классическая оболочка».
Рэндольф Ричардсон
1
Каналы существуют и в CMD.EXE и работают почти так же, как они классически работают в Unix. Они были частью синтаксиса CMD из первых общедоступных бета-версий NT, а также были частью командного синтаксиса COMMAND.COM в DOS.
RBerteig
1
Огромная разница между каналами командной оболочки, каналами * nix и каналами powershell заключается в том, что каналы powershell пропускают объекты, а не строки. Это изменит правила игры IMO.
EBGreen
Какое отношение имеет PowerShell к вопросу?
Synetech
1
@Syntech inc. - Ничего напрямую. Косвенно, однако, это альтернатива использованию cmd.exe, которая отвечала бы цели вопроса, предоставляя настраиваемое приглашение, которое можно задать с помощью параметра профиля.
EBGreen
1

Окончательный метод:

setx prompt ""

Для всех пользователей:

setx prompt "" /M

Пример приглашения, настраиваемый, со стилем:

setx PROMPT "$_$e[0;1;44mN$e[1;30;47mI$e[0;1;44mC$E[35;40m $d$s$t$h$h$h$h$h$h$_$E[1;33;40m$p$_$E[0;0m~$g$s"
Джерсон Мартинес
источник