Выполнение bat файла после ввода пароля..
Подскажите, пожалуйста, как организовать чтобы bat попросил пароль и только после правильного ввода выполнялся?
Спасибо!
|
vasya00, реализовать запрос пароля - мелочи. Сложнее сделать так, чтоб он вводился тобой, но не отображался.
|
ShaddyR,
Цитата:
Цитата ShaddyR
Сложнее сделать так, чтоб он вводился тобой, но не отображался. »
|
На самом деле, лично мне, это не принципиально..
|
Код:
@echo off
set /p promt=Требуется идентификация.^>
if not %promt%==пароль exit
|
Freddy1984 |
05-02-2016 11:45 2602755 |
так а вообще возможно сделать так что бы пароль не отображался при вводе? или при вводе вместо пароля были к примеру звёздочки?
и как сделать так, что бы если первый раз пароль был введён не правильно, с новой строки можно было осуществить вторую попытку ввода пароля?
никто не в курсе?
|
Цитата:
Цитата Freddy1984
так а вообще возможно сделать так что бы пароль не отображался при вводе? »
|
На XP можно — посредством вызова WSH и задействования имеющейся на ней библиотеки. На новых ОС проще целиком переходить на PowerShell (там со вводом паролей проблем нет).
Цитата:
Цитата Freddy1984
если первый раз пароль был введён не правильно, с новой строки можно было осуществить вторую попытку ввода пароля? »
|
А потом — третью и так далее?
Код:
:Repeat
set /p promt=Требуется идентификация.^>
if not %promt%==пароль goto :Repeat
|
Freddy1984 |
05-02-2016 12:05 2602764 |
с этим параметром дальше скрипт не отрабатывает к сожалению. есть может ещё какие соображения?? :)
вот сообщение между вводами пароля. а по поводу если не правильно ввести пароль и второй попыткой... бЯдА.. "goto :Repeat" не работает. :(
так выглядит сообщение о повторном вводе пароля:
Код:
for /f "delims=" %%A in ("Не правильный пароль, введите пароль заново") do >nul chcp 866& echo.%%A
|
Freddy1984, Все это возможно, но смысла нет, так как пароль можно подсмотреть в батнике. Если уж проверять пароль, то как-нибудь иначе, например с помощью архива, у которого такой же пароль -- распаковался, значит переменная с паролем верна и ее можно подставлять туда, для чего она предназначена. А проверка в явном виде, это самообман.
Код:
:Repeat
set /p promt=Требуется идентификация.^>
if not %promt%==пароль (echo Неверный пароль & goto :Repeat)
|
Freddy1984 |
05-02-2016 12:27 2602777 |
Цитата:
Цитата Foreigner
пароль можно подсмотреть в батнике »
|
абсолютно согласен, но батник же можно зашифровать и не так всё просто окажется... так же? :)
|
Freddy1984, ну так введите после строки
к примеру "Пароль не правильный. Повторите ещё раз." или что там вам больше по вкусу.
Вывод сообщений в BAT файлах
Примерно так
Код:
:Repeat
echo off
cls
echo "Пароль не правильный. Повторите ещё раз."
|
Freddy1984 |
05-02-2016 12:32 2602783 |
Цитата:
Цитата Foreigner
(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 ввесли швабракадабру, то консольное окно просто закроется... хм.
|
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 2602796 |
Цитата:
Цитата Foreigner
А что должно быть в итоге? »
|
1. После правильного ввода пароля с первого раза, должна пропускаться команда ввода пароля второй раз, и продолжить выполнение скрипта с дальнейшим заданием к примеру запуска некой программы.
2. Или второе, если первый раз пароль введён не правильно, выводится сообщение о том что пароль не правильный и надо его ввести ещё раз, если пароль со второй попытки введён правильно, то идёт дальнейшее выполнение скрипта, если пароль второй раз введён не правильно, то работа скрипта прерывается, и консольное окошко закрывается.
Вот так кратенько и всё. :)
|
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 2602802 |
Foreigner Отлично! ваш код то что надо! так пойдёт...
теперь ультиматийно завершающий вопрос :)
а вместо отображения пароля при вводе что бы было пусто, либо звёздочки. так вообще возможно?? :)
|
Назовите меня извращенцем, но я бы создал левого пользователя и запускал бы через runas. Там вам и запрос пароля, и скрытие вводимых символов, и отсутствие хранения пароля в открытом виде (ибо как не крути, но в теле батника - это в открытом виде.)
|
Freddy1984 |
05-02-2016 13:46 2602834 |
Цитата:
Цитата Elven
Назовите меня извращенцем »
|
нет, вы нормальный человек :)
Цитата:
Цитата Elven
но в теле батника - это в открытом виде »
|
а если зашифровать, то получается в закрытом? :)
|
Время: 01:56.
© OSzone.net 2001-