Создание цикла в пакетном файле - PullRequest
1 голос
/ 12 января 2012

Мне нужен командный файл, в котором пользователь вводит пароль и, если он верный, сопоставляет диск. Если это не так, то нужно вернуться к началу

У меня есть

:start
echo    Username=****

SET /P password=Please enter the password

IF %password%==password goto map
IF %password%!==!password goto start

:map

NET USE Z: \\server\folder

Работает, если введен правильный пароль, но не работает, если он неправильный

Любая помощь?

Ответы [ 3 ]

2 голосов
/ 12 января 2012

Это потому, что чек

if %password%!==!password

никогда не может быть правдой. if сравнивает две строки с каждой стороны ==. Спросите себя, может ли это условие быть когда-либо истинным; -)

Вы, вероятно, хотите

if %password%==password goto map
goto start

вместо этого. goto map пропускает следующую строку, поэтому она не будет выполнена, и если условие было ложным, оно вернется к start.

Другой вариант -

if %password%==password (goto map) else (goto start)

, что, вероятно, более знакомо программистам, привыкшим к структурированному программированию.

Одно предостережение: обычно вы должны заключать в кавычки проверяемые строки для защиты от пробелов во входных данных:

if "%password%"=="password" ...
0 голосов
/ 07 августа 2012
@echo off
color 02
set num1=0
set num2=1 
set terminator=5
:loop
set /a num1= %num1% + %num2%
if %num1%==%terminator% goto close
goto open
:close
echo %num1%
pause 
exit
:open
echo %num1%
goto loop

попробуйте этот код: num1 - это число, которое необходимо увеличить, а num2 - это значение, добавленное к num1, а terminator - это значение, где заканчивается num1. В этом выражении вы можете указать другое значение для терминатора (если% num1% ==% terminator % goto close) это логическое выражение goto close - это процесс, если логическое значение true, а goto open - процесс, если логическое значение false, это можно понять, только если вы программист

, пожалуйста, проголосуйте, если вы понимаете этот код

сохранить его в файле с расширением .bat

0 голосов
/ 12 января 2012

Вам не нужно IF %password%!==!password goto start в целом. Если пароль в порядке, то goto map, в противном случае goto start. То есть, если вы замените IF %password%!==!password goto start на goto start, вы получите то, что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...