Показать полную графическую версию : Выполнение bat файла после ввода пароля..
Подскажите, пожалуйста, как организовать чтобы bat попросил пароль и только после правильного ввода выполнялся?
Спасибо!
vasya00, реализовать запрос пароля - мелочи. Сложнее сделать так, чтоб он вводился тобой, но не отображался.
ShaddyR, Сложнее сделать так, чтоб он вводился тобой, но не отображался. »
На самом деле, лично мне, это не принципиально..
@echo off
set /p promt=Требуется идентификация.^>
if not %promt%==пароль exit
Freddy1984
05-02-2016, 11:45
так а вообще возможно сделать так что бы пароль не отображался при вводе? или при вводе вместо пароля были к примеру звёздочки?
и как сделать так, что бы если первый раз пароль был введён не правильно, с новой строки можно было осуществить вторую попытку ввода пароля?
никто не в курсе?
так а вообще возможно сделать так что бы пароль не отображался при вводе? »
На XP можно — посредством вызова WSH и задействования имеющейся на ней библиотеки. На новых ОС проще целиком переходить на PowerShell (там со вводом паролей проблем нет).
если первый раз пароль был введён не правильно, с новой строки можно было осуществить вторую попытку ввода пароля? »
А потом — третью и так далее?
:Repeat
set /p promt=Требуется идентификация.^>
if not %promt%==пароль goto :Repeat
Freddy1984
05-02-2016, 12:05
goto :Repeat »
с этим параметром дальше скрипт не отрабатывает к сожалению. есть может ещё какие соображения?? :)
вот сообщение между вводами пароля. а по поводу если не правильно ввести пароль и второй попыткой... бЯдА.. "goto :Repeat" не работает. :(
так выглядит сообщение о повторном вводе пароля:
for /f "delims=" %%A in ("Не правильный пароль, введите пароль заново") do >nul chcp 866& echo.%%A
Foreigner
05-02-2016, 12:21
Freddy1984, Все это возможно, но смысла нет, так как пароль можно подсмотреть в батнике. Если уж проверять пароль, то как-нибудь иначе, например с помощью архива, у которого такой же пароль -- распаковался, значит переменная с паролем верна и ее можно подставлять туда, для чего она предназначена. А проверка в явном виде, это самообман.
:Repeat
set /p promt=Требуется идентификация.^>
if not %promt%==пароль (echo Неверный пароль & goto :Repeat)
Freddy1984
05-02-2016, 12:27
пароль можно подсмотреть в батнике »
абсолютно согласен, но батник же можно зашифровать и не так всё просто окажется... так же? :)
Freddy1984, ну так введите после строки
:Repeat
к примеру "Пароль не правильный. Повторите ещё раз." или что там вам больше по вкусу.
Вывод сообщений в BAT файлах (http://www.firststeps.ru/msoffice/win/bats/r.php?3)
Примерно так
:Repeat
echo off
cls
echo "Пароль не правильный. Повторите ещё раз."
Freddy1984
05-02-2016, 12:32
(echo Неверный пароль & goto :Repeat) »
странно... и даже это не помогает...
вот весь код:
@echo off
chcp 1251 >nul
Echo.
Echo.
set /p promt=ВВЕДИТЕ ПАРОЛЬ:^>
if not %promt%==111 (echo Неверный пароль & goto :Repeat)
for /f "delims=" %%A in ("Неправильный пароль, введите пароль заново") do >nul chcp 866& echo.%%A
chcp 1251 >nul
set /p promt=ВВЕДИТЕ ПАРОЛЬ:^>
if not %promt%==111 exit
но если первый раз вместо 111 ввесли швабракадабру, то консольное окно просто закроется... хм.
Foreigner
05-02-2016, 12:48
Freddy1984, А что должно быть в итоге?
@echo off
1>nul chcp 1251
setlocal
set "pass=fake"
:repeat
set /p pass="Введите пароль > "
if not "%pass%"=="111" (echo Неверный пароль & goto:repeat)
echo пароль %pass% Верный
1>nul chcp 866
Freddy1984
05-02-2016, 12:57
А что должно быть в итоге? »
1. После правильного ввода пароля с первого раза, должна пропускаться команда ввода пароля второй раз, и продолжить выполнение скрипта с дальнейшим заданием к примеру запуска некой программы.
2. Или второе, если первый раз пароль введён не правильно, выводится сообщение о том что пароль не правильный и надо его ввести ещё раз, если пароль со второй попытки введён правильно, то идёт дальнейшее выполнение скрипта, если пароль второй раз введён не правильно, то работа скрипта прерывается, и консольное окошко закрывается.
Вот так кратенько и всё. :)
Foreigner
05-02-2016, 13:01
Freddy1984, Т.е. три попытки?
@echo off
1>nul chcp 1251
setlocal
set "pass=fake"
:repeat
set /a cnt+=1
if %cnt% geq 4 exit
set /p pass="Введите пароль. Попытка %cnt% > "
if not "%pass%"=="111" (echo Неверный пароль & goto:repeat)
echo Дальнейшее выполнение
Freddy1984
05-02-2016, 13:06
Foreigner Отлично! ваш код то что надо! так пойдёт...
теперь ультиматийно завершающий вопрос :)
а вместо отображения пароля при вводе что бы было пусто, либо звёздочки. так вообще возможно?? :)
Назовите меня извращенцем, но я бы создал левого пользователя и запускал бы через runas. Там вам и запрос пароля, и скрытие вводимых символов, и отсутствие хранения пароля в открытом виде (ибо как не крути, но в теле батника - это в открытом виде.)
Freddy1984
05-02-2016, 13:46
Назовите меня извращенцем »
нет, вы нормальный человек :)
но в теле батника - это в открытом виде »
а если зашифровать, то получается в закрытом? :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.