|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Некорректность выполнения батника в случ.не успешн выполн. команды |
|
CMD/BAT - Некорректность выполнения батника в случ.не успешн выполн. команды
|
Новый участник Сообщения: 13 |
Профиль | Отправить PM | Цитировать
Доброго. Такой вопрос. Есть батник:
net use x: \\comp1\share || shutdown -s -t 0 ... Ну всё просто, доступен сетевой ресурс - подключаем сетевой диск - выполняем дальше. Не доступен - выключаем пк. Исходные данные - сетевой ресурс НЕ доступен 100%. Пользователь - права администратора 100%. Программа (см.ниже) запущена с правами этого же пользователя = с правами администратора. Система Win2003 (а-ля XP). В общем вручную запускаю батник - "ошибка, отдаётся команда на выключение". Т.е. всё ОК. Есть программа резервного копирования (напомню, она запущена с правами этого же пользователя с правами администратора). У этой программы в настройках прописан этот батник после выполнения резервирования. Она (эта программа) успешно запускает этот батник, видно, что ждёт 2-3 сек. подключения сетевого ресурса (как и при ручном запуске батника), видно на мгновение, что выскакивает ошибка, помоему о недоступности сетевого ресурса (точнее сказать не могу, проскакивает быстро) и.... всё, пк не выключается, т.е. даже не доходит до выполнения команды shutdown -s -t 0 Вопрос не в изменении батника (изменить могу) и возможно вопрос не совсем в эту ветку по батникам... Мне интересно какие есть подводные камни в такой конф. батника с "||". Почему такое неоднозначное поведение может быть? Спасибо. |
|
Отправлено: 01:39, 09-11-2022 |
Старожил Сообщения: 247
|
Профиль | Отправить PM | Цитировать чтобы без опасений уверенно использовать
переходите на линукс. под виндоз ненадежно
всякие там от этого https://learn.microsoft.com/en-us/pr...754335(v=ws.11) |
Отправлено: 03:29, 09-11-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать && - выполнить, если предыдущая команда вернула "0", || - выполнить если предыдущая команда вернула НЕ "0". вроде как все просто, с этим можно жить, но иногда всплывают неприятные подводные камни, с которыми непонятно куда приткнуться. и непонятно в первую очередь потому, что нет стройного понимания, что выполнилось, а что нет. посему таковая конструкция используется в ванлайнерах или в том месте, где ответ предыдущей команды совершенно однозначен и не подразумевается возможности невыполнения команды следующей.
для всех прочих случаев лучше придумать какую-то другую проверку, например в случае с сетевым диском я использовал if (not) exist c обязательным else. Так банально проще увидеть в каком месте батник спотыкается (хотя бы через echo "шара (не)доступна" >> error.log). конкретно с поведением || в указанной проблеме в первую голову приходит вопрос о пользователе, это именно отдельный пользователь или какая-то встроенная учетка от имени которой выполняется батник? |
Отправлено: 08:39, 09-11-2022 | #3 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Elven
Спасибо за ответ. Цитата Elven:
Если батник запускает человек вручную - всё ок, батник отрабатывается как надо. Если батник запускает программа - не работает. (Опять же, возвращаясь к написанному - выполняется первая команда, ищется сетевой ресурс и не находится - всё, выполнение батника останавливается). |
|
Отправлено: 11:49, 09-11-2022 | #4 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Upd.
Вопрос, снимается. Возможно у меня какой-то частный случай. Но странно всё равно. В общем для тестов изменил батник на: net use x: \\comp1\share || echo share not found&pause --- Сообщение вижу и при ручном и при, так сказать, автоматическом запуске. Меняю echo на shutdown -s -t 100&pause Вручную работает, ч-з программу - нет. Пишет стандартное сообщение, когда Win не может найти экзешник. Но что интересно, файл shutdown.exe - лежит по своему стандартному пути %systemroot%\system32 (c:\windows\system32). В настройках ОС, в переменных окружения PATH этот путь указан. В общем что сделал - скопировал shutdown.exe туда же, где и батник и вуаля, всё работает. ps Прошу прощения, уважаемые гуру, что вас побеспокоил, полностью понимаю, что моя тема абсолютно не связана с батниками и их написанием. pps Однако интересный казус)) |
|
Отправлено: 12:09, 09-11-2022 | #5 |
Ветеран Сообщения: 7116
|
Профиль | Отправить PM | Цитировать Цитата daledale:
|
|
------- Отправлено: 19:20, 09-11-2022 | #6 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать В Windows полный порядок с обработкой ошибок, но если не пользоваться технологиями прошлого века (при всём к ним уважении), а перейти на Powershell.
|
------- Отправлено: 21:57, 09-11-2022 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Циклический запуск консоли .cmd после выполнения батника | BKPB | Скриптовые языки администрирования Windows | 5 | 11-07-2019 15:27 | |
CMD/BAT - Результат выполнения команды в переменную | densan | Скриптовые языки администрирования Windows | 13 | 22-11-2018 17:38 | |
CMD/BAT - Результат выполнения команды в переменные | DRON4eg | Скриптовые языки администрирования Windows | 2 | 19-05-2017 08:59 | |
CMD/BAT - [решено] Не закрываются последствия выполнения команды Start | Voron-orel | Скриптовые языки администрирования Windows | 2 | 01-03-2016 14:36 | |
GPO: ошибки выполнения батника при загрузке системы (запуск сценариев) | Hooty | Microsoft Windows NT/2000/2003 | 15 | 24-02-2009 13:31 |
|