2015-08-31 2 views
0

Я застрял в пакетном файле для защиты паролем командной строки Windows. Ни один из способов не работает должным образом. Если он не отображает синтаксическую ошибку, он не может пройти даже при вводе правильного пароля. Вот код:Защита паролем паролей Windows?

@echo off 
echo Computer password protected. 
echo. 

:PSW 
set /p "PASS" = "Enter password: " 
IF "%PASS%"=="kerberos" (
    echo Welcome. 
    echo. 
    goto EOF 
) ELSE (
    echo Wrong password! Try again. 
    echo. 
    goto PSW 
) 

:EOF 

Я сохранил пароль, поскольку это всего лишь тест, чтобы убедиться, что он работает правильно и как он работает.

ответ

1

Не ставьте " или пробелы в вашей команде set.

например.

C:\Users\marc>set /p "pass" = "prompt: " 
prompt: argle 

C:\Users\marc>set /P "pass2"= "prompt: " 
prompt: bargle 

C:\Users\marc>set 
[..snip..] 
pass" =argle 
pass2"=bargle 

Обратите внимание, как " и пространство стало частью переменной среды.

ли это вместо:

C:\Users\marc>set /p pass3="prompt: " 
        ^^^^^^^---note: no quotes, no space 
prompt: kittens 

C:\Users\mbb190>echo %pass3% 
kittens 
+0

Вы также можете процитировать назначение 'установить/р«pass3 = строки:»' –

1

set /p синтаксис является неправильным. Вы должны использовать:

set /p PASS="Enter password: " 
+0

Так же скрипт не работает под MS-DOS работает в виртуальной машине. Похоже, мне нужно искать другой синтаксис, чтобы получить запрашиваемое значение в переменной. – Polda18

+0

Насколько я помню, 'set' не поддерживает'/P' в чистом MS-DOS, к сожалению ... – aschipfl

+0

Я уже проверил это в справке MS-DOS. Я не знаю, как сделать удобное заполнение переменной строкой prompt в MS-DOS. Возможно, это было не так просто с помощью простых пакетных скриптов. Простая программа могла бы реально выполнить эту работу, но сначала ее нужно записать в QuickBasic или на другом языке программирования, а затем скомпилировать в EXE или COM (COM будет лучше). Также он должен обрабатывать другие символы, такие как пробелы и специальные символы для интерполяции. Затем Smart может использовать установочную дискету DOS, перезагрузиться, завершить установку и удалить пакетную линию (и, возможно, удалить программу). – Polda18

Смежные вопросы