-1

У меня есть пакетный скрипт (который я запускаю как файл .cmd через контекстное меню «Отправить»), который сначала отключает интернет-адаптер пользователя, а затем надежно распаковывает архив .zip.

Для большинства людей это работает отлично, но у меня есть пара пользователей, которые получают ошибку «Система не может найти указанный диск», когда там нет ничего, что ищет диск.

netsh interface set interface name = "Подключение по локальной сети" admin = отключено

if "%errorlevel%" == "0" (

    echo Network Interface disabled
    ::netsh interface set interface name="Wireless Network Connection" admin=disabled
    ::if "%errorlevel%" == "1" (
    ::echo Network Interface still active, exiting
    ::pause
    ::exit \b
    ::)
    )   ELSE (

    echo Network Interface still active
    pause
    exit \b
    )

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

Network Interface disabled
The system cannot find the drive specified.
The system cannot find the drive specified.
The system cannot find the drive specified.
Network Interface still active

Таким образом, даже несмотря на то, что я не ищу накопитель, он не должен иметь возможность отображать отключенный сетевой интерфейс И сетевой интерфейс в то же время активным, верно?


РЕДАКТИРОВАТЬ: Я уверен, что это потому, что у меня есть :: комментарии внутри блока IF. Видимо, это не круто с пакетными сценариями Windows.

http://www.robvanderwoude.com/comments.php

2 ответа2

0

Может быть, это "выход \b" с обратной косой чертой? Я думаю, что вы имеете в виду «выход / б». (Кто знает, может быть, это интерпретирует "\b" как путь или что-то еще.)

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

0

Вы получаете эти ошибки из-за неправильного использования структуры IF ELSE. Использование IF ELSE с квадратными скобками не работает в пакетных сценариях, как это работает в большинстве языков программирования.

Предложение ELSE должно находиться в той же строке, что и команда после IF. Либо переместите его на ту же строку, либо используйте ярлыки GOTO +.

FYI:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .