Пакет Windows - запросить ввод пользователя со значением по умолчанию - PullRequest
0 голосов
/ 13 февраля 2019

В пакетном файле Windows я хочу попросить пользователя ввести данные, я хочу показать пользователю значение по умолчанию, которое является папкой, в которой находится файл bat.Таким образом, при запуске пакетного файла партия проверяет текущую папку и устанавливает для нее переменную по умолчанию, тогда пользователь может принять предложенное значение, нажав ввод или ввести другое значение.я пробовал этот код, но он не работает, UserInputPath не установлен.

    set default=ABCD
    set /p UserInputPath=%default%
    echo %UserInputPath%

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Замените первую строку на set UserInputPath=ABCD, поэтому, когда пользователь просто подтверждает приглашение с помощью ENTER , предыдущее значение переменной не будет перезаписываться, и поэтому ABCD будет отображаться:

set "UserInputPath=ABCD"
set /P UserInputPath="Prompt text: "
echo(%UserInputPath%

Если вы хотите узнать, набрал ли пользователь что-либо, запросите значение ErrorLevel впоследствии:

if ErrorLevel 1 echo The user just pressed {Enter}.

NB:
Если вы хотите, чтобы подсказка была предварительно заполнена ABCD, вам необходимо использовать внешнее программное обеспечение, способное посылать нажатия клавиш на эту подсказку ...

0 голосов
/ 14 февраля 2019

Вы запросили user can accept the suggested value by clicking on enter or enter a different value.

Воспользуйтесь преимуществом поведения set /p: если вход пуст (просто ENTER), переменная остается без изменений.Таким образом, вы можете просто установить значение по умолчанию:

set "UserInputPath=ABCD"
set /p "UserInputPath=Enter path or just ENTER for default [%UserInputPath%] : "
echo %UserInputPath%
0 голосов
/ 13 февраля 2019

На основании вашего редактирования вопроса.Вы хотите использовать %~dp0 для определения диска и пути к пакетному файлу, затем укажите путь в приглашении и установите его по умолчанию, если пользователь не введет что-то еще, он всегда будет использовать путь по умолчанию, по которому запускается пакетот.Может быть запущен как script value или как script только там, где пользователю будет предложено:

@echo off
set "UserInputPath=%1"
set "default=%~dp0"
if "%UserInputPath%"=="" set /p "UserInputPath=Enter Path (Default "%default%"): " || set "UserInputPath=%default%"
echo "%UserInputPath%"
pause
...