командный файл (.bat), показывающий непредвиденное поведение - PullRequest
1 голос
/ 29 июня 2019

Мой пакет Сценарий: -

@echo off

:alpha

rasdial "connection_name" connection_id connection_pass> tmpFile 
set /p myvar= < tmpFile 
del tmpFile 
echo %myvar%
if "%myvar%" == "You are already connected to Broadband Connection." (exit)
goto alpha

Ожидается, что этот сценарий запустит команду radial ..., а затем сохранит выходные данные команды в временном файле tempFile. Затем он присваивает переменную сохраненный вывод команды radial внутри этого файла и удаляет файл. Переменная, в свою очередь, используется для проверки того, была ли команда успешно выполнена или нет (если команда выполнена успешно, то You are already connected to Broadband Connection. будет выводиться).

Но после выполнения этого командного файла я получаю вывод: -

Connecting to Broadband Connection...
The syntax of the command is incorrect.

и сценарий прерывается. Вместо повторения, пока команда get не будет успешно выполнена.

ВЫХОД ПОСЛЕ ЭХО ВКЛ .: -

rasdial "Broadband Connection" uname pass  1>tmpFile

set /p myvar=   0<tmpFile

del tmpFile

echo You are already connected to Broadband Connection.
You are already connected to Broadband Connection.
The syntax of the command is incorrect.

if "You are already connected to Broadband Connection.
Command completed successfully." == "You are already connected to Broadband Connection." (exit)

1 Ответ

3 голосов
/ 29 июня 2019

Переменная myvar, кажется, содержит перевод строки (да, это действительно неожиданно), разрушая ваш синтаксис if.

Вы должны переключиться на другой метод (предложенный @Marged)

:alpha
rasdial "Broadband Connection" uname pass  | find "You are already connected to Broadband Connection." && exit /b
timeout 1 >nul
goto :alpha

Передает выход rasdial напрямую в команду find. && работает как «Если find успешно» (строка найдена), тогда выполните команду exit.

Совет: никогда не создавайте бесконечный цикл без простоя (сделал это с timeout здесь), чтобы не дать ЦПУ работать на 100%.

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