Изменить строку командной строки окна

0

Я хочу изменить строку командной строки в командной строке Windows?

Например.

C:\current\path → $ CustomPrompt>

Если возможно, я бы предпочел, чтобы решение использовало winapi. Я уже посмотрел на некоторые из функций консоли, но я не могу найти, что я бы предположил, что wold манипулирует строкой подсказки? Кто-нибудь знает как это сделать?

  • 0
    Что не так с простой установкой переменной среды PROMPT ?
  • 0
    Я пишу программу на C ++, поэтому, если возможно, я бы хотел использовать c ++. О, как исправление, PROMPT - это не переменная окружения, а команда.
Показать ещё 12 комментариев
Теги:
winapi

1 ответ

1

Строка командной строки определяется как переменная среды PROMPT. Вы можете изменить эту переменную с помощью функции setenv() из cstdlib:

#include <stdlib.h>

//...

setenv("PROMPT", "$A$A", true);

Это, например, приведет к строке приглашения '&&' (двойной амперсанд). Для более интересных примеров проверьте это.

EDIT: есть способ добиться этого без необходимости перезапуска командного интерпретатора. Создайте следующий командный файл:

@echo off
break off
title custom command prompt
color 0a
cls

:cmd
 set /p cmd=command:

 %cmd%
 echo.
 goto cmd

Назовите его "change_prompt.bat". Затем в коде c++ выполните командный файл:

system("change_prompt.bat");

В результате подсказка будет выглядеть так:

Изображение 174551

Как вы можете видеть, это изменяется:

  • название приглашения
  • быстрый цвет
  • строка подсказки
  • 0
    если это не глупый маневр повторного сбора данных, OP должен заметить, что это влияет только на запросы экземпляров интерпретатора команд, созданные (позже) этим процессом, и удалить выбор «решения»
  • 0
    -1 setenv должен быть std::setenv при использовании <cstdlib> , текущий код не гарантируется для компиляции. однако использование <cstdlib> не является хорошим выбором. Кроме того, как уже отмечалось ранее, этот подход работает только для экземпляров интерпретатора команд, запущенных из этого процесса (если он вообще работает, мне не совсем ясно).
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню