Пакетное программирование сценариев - любой способ изменить строку, где эхо? - PullRequest
1 голос
/ 19 января 2012

По сути, у меня есть раздел, в котором мне нужно выполнить цикл до тех пор, пока пользователь не предоставит действительный ввод, но если они постоянно вводят неверный ввод, и я просто продолжаю запрашивать SET /P MYVAR="Selection? ", он печатает его на новой строке каждый раз, вызывая прокрутку...

Я бы предпочел сделать:

:SELECTION
SET /P MYVAR="Selection? "

IF ERROR HERE ( //I realize this is pseudo code for the error check
    ECHO MAKE A VALID SELECTION...
    MOVE UP 2 ROWS?
    GOTO :SELECTION
)

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Вы можете использовать cls, чтобы очистить экран и переписать его снова так:

:SELECTION
SET /P MYVAR="Selection? "

IF ERROR HERE ( //I realize this is pseudo code for the error check
    ECHO MAKE A VALID SELECTION...
    MOVE UP 2 ROWS?
    cls
    GOTO :SELECTION
)

Таким образом, пользователь просто постоянно видит «Выбор?», Если он делает неверный ввод.

1 голос
/ 19 января 2012

Если это ANSI совместимый терминал, вы можете сделать что-то вроде этого:

ECHO <CSI>[2A

Где <CSI> - это обычно escape-символ 27.

То же в терминале Mac OS X:

$ echo -e "\0033[2A"
...