#batch-file
Вопрос:
Не внизу, а рядом с «set /p».
Мой код таков
установить /p «вход=Вход:» amp;amp; эхо-тест
Что я хочу, чтобы результат был таким
Ввод: [ввод текста здесь] Тест
Как мне это сделать?
Комментарии:
1. В вашем вопросе говорится «отображать», но не распространяется на это. Не могли бы вы, пожалуйста, определить эту цель? и объясните, что вы хотите, чтобы результирующая переменная
%input%
содержала? Если бы вы могли также поместить свой код в контекст, а не только в одну строку, это также значительно помогло бы ответчикам.2. Было бы относительно просто отобразить его так, как вы хотите, однако все, что будет введено в этом приглашении, начнет перезаписывать текст приглашения
Test
. Пример:For /F %%G In ('Prompt $H ^amp; For %%H In (1^) Do Rem') Do Set /P "input=Input: Test%%G%%G%%G%%G%%G%%G"
, иFor /F %%G In ('Prompt $H ^amp; For %%H In (1^) Do Rem') Do Set /P "input=Input: [input text here]%%G%%G%%G%%G%%G%%G%%G%%G%%G%%G%%G%%G%%G%%G%%G%%G"
. В обоих случаях содержимое будет содержать только то, что было введено, а не то, что отображается.3. @Compo Я имею в виду, например, «Ввод: 12345», а затем рядом с ним есть текст, которым пользователь не может управлять
4. Как насчет того, чтобы попробовать код, который я вам дал, чтобы вы могли точно видеть, как он работает и что происходит. Оба примера представляют собой однострочные команды пакетного файла, которые не требуют абсолютно никаких изменений.
5. Это
set /p
то, что (жестко закодировано) устанавливает курсор на следующую строку. Вы не можете обойти это, но вы можете переместить курсор с помощью escape-последовательностей .
Ответ №1:
Это работает во всех версиях Windows, за исключением Windows 10:
@echo off
setlocal EnableDelayedExpansion
rem Get BS, CR and TAB characters
for /F %%a in ('echo prompt $H ^| cmd') do set "BS=%%a"
for /F %%a in ('copy /Z "%~F0" NUL') do set "CR=%%a"
set "TAB="
for /F "skip=4 delims=pR tokens=2" %%a in ('reg query hkcuenvironment /v temp' ) do set "TAB=%%a"
for /F "tokens=2 delims=0" %%a in ('shutdown /? ^| findstr /BC:E') do if not defined TAB set "TAB=%%a"
set /p "input=Input: "
echo !TAB!!BS!!BS!!CR!Input: !input! Test
Чтобы Windows 10 работала, вам нужно включить устаревший режим консоли.
Дополнительные сведения см. при перемещении курсора в любую позицию с помощью команды just ECHO