Bat/Cmd интерфейс ввода пароля для пользователя

Для командной строки есть проблема - невозможно безопасно запросить данные у клиента для работы скрипта, например чтобы пользователь ввел пароль а мы скриптом его проверили бы. Нашлась программа под названием The Wizard's Apprentice, или WizApp. Подробности тут. Она и позволяет делать то, что нам надо.

Запускать файл test.cmd

echo off

set watitle=Login windows.

set watext=Please enter the password:

set wasig=(c) Raymond

set waico=buddy.ico

set wabmp=logo.bmp

set walabels=;Go!;Go!;%date%

set wabat=c:\11\wizap\test2.cmd

start /w c:\11\wizap\wizapp.exe NOCANCEL NOBACK EB PLAIN

<nul set /p strTemp=call passcheck.cmd >test3.cmd

tr -cd 0-9 <test2.cmd >>test3.cmd

call test3.cmd

pause

При запуске выдается такое окошко:

Где:

watitle - Заголовок окна

watext - Текст окна

wasig - Текст слева снизу

aico - Иконка окна (в моем случае мишка)

wabmp - Картинка часов

walabels - Надписи кнопок внизу окна (назад/вперед/финиш/отмена)

wabat - Файл, в котором программа выведет то, что набрал пользователь.

start /w c:\11\wizap\wizapp.exe NOCANCEL NOBACK EB PLAIN - Запуск самой программы с ключами

К сожалению особенности командной строки не позволяют программе добавить или изменить константу в процессе работы, поэтому она вынуждена создавать новый файл с введенными данными пользователя. В данном случае это будет файл c:\11\wizap\test2.cmd. Примерный вывод такого файла:

set waoutput=123123

set waoutnum=

Соответственно чтобы использовать эти данные, я делаю так. Создаю новый файл test3.cmd с командой call passcheck.cmd

<nul set /p strTemp=call passcheck.cmd >test3.cmd

Выдираю значение пароля и добавляю его в файл text3.cmd

tr -cd 0-9 <test2.cmd >>test3.cmd

В итоге в этом файле появляется команда вызова скрипта проверки пароля:

call passcheck.cmd 111222333

И в конце скрипта собственно делаю его вызов:

call test3.cmd

В самом файле passcheck.cmd происходит только показ пароля:

echo %1

На этом пока все. Возможно в будущем доработаю скрипт генерации и проверки временных паролей.