Войти

Показать полную графическую версию : Выполнение bat файла после ввода пароля..


vasya00
12-05-2012, 14:56
Подскажите, пожалуйста, как организовать чтобы bat попросил пароль и только после правильного ввода выполнялся?
Спасибо!

ShaddyR
12-05-2012, 15:52
vasya00, реализовать запрос пароля - мелочи. Сложнее сделать так, чтоб он вводился тобой, но не отображался.

vasya00
12-05-2012, 16:01
ShaddyR, Сложнее сделать так, чтоб он вводился тобой, но не отображался. »
На самом деле, лично мне, это не принципиально..

ShaddyR
12-05-2012, 16:27
@echo off
set /p promt=Требуется идентификация.^>
if not %promt%==пароль exit

Freddy1984
05-02-2016, 11:45
так а вообще возможно сделать так что бы пароль не отображался при вводе? или при вводе вместо пароля были к примеру звёздочки?
и как сделать так, что бы если первый раз пароль был введён не правильно, с новой строки можно было осуществить вторую попытку ввода пароля?
никто не в курсе?

Iska
05-02-2016, 11:55
так а вообще возможно сделать так что бы пароль не отображался при вводе? »
На 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
пароль можно подсмотреть в батнике »
абсолютно согласен, но батник же можно зашифровать и не так всё просто окажется... так же? :)

yurfed
05-02-2016, 12:28
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 Отлично! ваш код то что надо! так пойдёт...
теперь ультиматийно завершающий вопрос :)
а вместо отображения пароля при вводе что бы было пусто, либо звёздочки. так вообще возможно?? :)

Elven
05-02-2016, 13:42
Назовите меня извращенцем, но я бы создал левого пользователя и запускал бы через runas. Там вам и запрос пароля, и скрытие вводимых символов, и отсутствие хранения пароля в открытом виде (ибо как не крути, но в теле батника - это в открытом виде.)

Freddy1984
05-02-2016, 13:46
Назовите меня извращенцем »
нет, вы нормальный человек :)

но в теле батника - это в открытом виде »
а если зашифровать, то получается в закрытом? :)




© OSzone.net 2001-2012