PDA

Показать полную графическую версию : [решено] Ввод с клавиатуры значения в переменную


river123
06-01-2011, 13:59
Хочу сделать bat файл, который выполняется только после ввода пароля. Как организовать это - не знаю.
Вот, что получилось.

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

El Sanchez
06-01-2011, 16:09
river123,

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

kiripanda
06-01-2011, 18:32
if not "var"=="565355" exit /b 1
наверное
if not "%var%"=="565355" exit /b 1

El Sanchez
06-01-2011, 21:16
kiripanda, ну да, конечно же. Исправил.

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


@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
Спасибо всем за ответы.

jackal-85
27-05-2018, 15:44
может кому пригодиться...
при использовании данных команд внутри оператора IF следует (т.е. IF в IF, проверка в проверке):

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

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

YuS_2
27-05-2018, 18:08
переменные внутри IF брать в восклицательные знаки !...!, а не в %...% »
Не совсем так...
Переменные, для получения изменяемых значений внутри операторов "скобки", следует раскрывать с отложенным расширением, т.е. так:

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

alpap
28-05-2018, 00:17
вот здесь наглядно видно зачем и на каком, в принципе, этапе. требуется отложенное раскрытие:

@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




© OSzone.net 2001-2012