Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Ввод с клавиатуры значения в переменную (http://forum.oszone.net/showthread.php?t=195894)

river123 06-01-2011 13:59 1582070

Ввод с клавиатуры значения в переменную
 
Хочу сделать bat файл, который выполняется только после ввода пароля. Как организовать это - не знаю.
Вот, что получилось.

@echo off
set /P var="Введите пароль: "
if var==565355 .....
....

El Sanchez 06-01-2011 16:09 1582231

river123,
Код:

@echo off
set /P var="Введите пароль: "
if not "%var%"=="565355" exit /b 1
...


kiripanda 06-01-2011 18:32 1582364

Цитата:

if not "var"=="565355" exit /b 1
наверное
if not "%var%"=="565355" exit /b 1

El Sanchez 06-01-2011 21:16 1582489

kiripanda, ну да, конечно же. Исправил.

Anonymоus 07-01-2011 05:59 1582712

Держать пароль в открытом виде в батнике - нехорошо. Можно немного затруднить чтение пароля, например так:

Код:

@Echo Off
Echo.
Echo.
Set /P $Input=  Введите пароль для продолжения ^>
Call :GetPswd
If Not "%$Input%"=="%$Pswd%" Cls&Echo Неправильный пароль, завершение работы&Ping -n 5 127.0.0.1>nul&Exit /B 1

Rem Тут код батника
Exit

:GetPswd
Set $Pswd=2545694053132554185
set $Pswd=%$Pswd:2=%
Set $Pswd=%$Pswd:~-0,13%
Set $Pswd=%$Pswd:54=%
Set $Pswd=%$Pswd:940=%
Set $Pswd=%$Pswd:135=%
Set $Pswd=%$Pswd%5

можно создать еще один батник с проверкой пароля, скомпилировать его в .exe и вызывать, а ответ (верный\неверный) передавать через ErrorCode. Но это все примитивная защита, рассчитанная на офисных работников, который батник второй раз в жизни видят. Если он будет использоваться для чего-то серьезного - запрос пароля не спасет.

river123 10-01-2011 13:42 1585203

Спасибо всем за ответы.

jackal-85 27-05-2018 15:44 2815761

может кому пригодиться...
при использовании данных команд внутри оператора IF следует (т.е. IF в IF, проверка в проверке):

1) в самом начале файла указать строку
Setlocal EnableDelayedExpansion

2) переменные внутри IF брать в восклицательные знаки !...!, а не в %...%

YuS_2 27-05-2018 18:08 2815790

Цитата:

Цитата jackal-85
переменные внутри IF брать в восклицательные знаки !...!, а не в %...% »

Не совсем так...
Переменные, для получения изменяемых значений внутри операторов "скобки", следует раскрывать с отложенным расширением, т.е. так:
Код:

setlocal enabledelayedexpansion
set x=1
(
set x=2
echo x="%x%", "!x!"
)


alpap 28-05-2018 00:17 2815854

вот здесь наглядно видно зачем и на каком, в принципе, этапе. требуется отложенное раскрытие:
Код:

@echo off
set "a=x"
set "b=y"

if "%a%"=="x" (
 echo %%a%%=x: Так и есть, теперь далее
 if "%b%"=="y" (
  echo %%b%%=y: Тоже так и есть
  set "c=z"
 )
 setlocal enabledelayedexpansion
 echo Вот новая переменная %%с%% равная !c!
)
pause



Время: 22:47.

Время: 22:47.
© OSzone.net 2001-