Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8

Модерирует : KLASS, IFkO

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах 8
(часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Мужики ну помогите побороть проблему,задача очень проста ,нужно контролировать есть ли интернет,и когда он пропадает ,выполнить скрипт
    Тот способ что предложил mouser в принципе подходит,но он не коректно работает,после пропадания интернета виснет в 50% случаев,а требуется 100% срабатывание.Очень прошу помочь так как очень срочно надо решение этой проблемы.Заранее огромное спасибо

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 20:32 26-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701

    Код:
    @echo off
    :inetchk
    ping 66.102.13.19>nul 2>&1
    if "_%errorlevel%" equ "_0" (
    rem 1 second pause
    ping -n 2 localhost>nul 2>&1
    goto:inetchk
    ) else (
    тут скрипт  
    )

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:53 26-04-2010 | Исправлено: mugil_cephalus, 20:57 26-04-2010
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701

    Цитата:
    нужно контролировать есть ли интернет,и когда он пропадает ,выполнить скрипт  


    Код:
    :_1
    ping www.google.ru
    if not %errorlevel% == 0 (
      Echo run script
    )
    Rem Pause
    ping -n 10 127.0.0.1 > nul
    Goto _1


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 21:09 26-04-2010 | Исправлено: NIKZZZZ, 21:09 26-04-2010
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    вот сделал так

    Код:
    :inetchk
    ping 66.102.13.19 2>&1
    if "_%errorlevel%" equ "_0" (
    rem 1 second pause
    ping -n 2 localhost 2>&1
    goto:inetchk
    ) else (
    echo -----------------
    echo Start program...
    ZTnBatch -h 192.168.1.1 -p 1981 -c "sys reboot 0"
    if not errorlevel=0 (
                    echo Connect Error! Restart...
                    goto loop2
                    )
    echo Connect OK! Wait ~180 sec...
    sleep 180  
    )
    ,
    А оно всё равно не работает,когда пропадает инет,пишет:ответ от 192.168.1.1 Даный узел не доступен
    Добавлю - интернет через адсл модем настроенный роутером , и в нём включён днцп сервер,компы айпишники получают автоматом

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 21:26 26-04-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mouser
    Цитата:
    wolf0425
    sleep.exe скачай или  
     
    ping -n seconds 127.0.0.1 > nul
    где seconds - желаемое число секунд +1.  
    отвечаешь не читая вопроса, что-ли?
    оба способа не прерывают паузу по нажатию на клавиатуру.
     
    king_stiven

    Цитата:
    из второго батника после паузы сымулировать нажатие клавиши  ентер

    э... А как? пример можно? я только через vbs умею кнопки в окна посылать - тогда проще на нем и написать паузу, чего пока не хочется.
    ps: батник может быть запущен многократно, в несколько окон с разными параметрами.
     
    pps: а проверить (не останавливаясь) из батника нет ли в клавиатурной очереди консоли в данный момент нажатой кнопки - как-то можно ?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 21:44 26-04-2010 | Исправлено: wolf0425, 21:49 26-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701
    проверил - работает ( изолированная workstation с adsl )

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:46 26-04-2010
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus и NIKZZZZ огромное вам спасибо за помощь но в обоих случаях при пропадании интернета мой скрипт не выполняется,из-за того что при пропадании инета,вместо
    Код:
    Обмен пакетами с www.l.google.com [74.125.87.106] с 32 байтами данных:
    Ответ от 74.125.87.106: число байт=32 время=59мс TTL=55
    Ответ от 74.125.87.106: число байт=32 время=52мс TTL=55
    Ответ от 74.125.87.106: число байт=32 время=52мс TTL=55
    Ответ от 74.125.87.106: число байт=32 время=53мс TTL=55
     

    отображается  

    Код:
    Обмен пакетами с www.l.google.com [74.125.87.99] с 32 байтами данных:
    Ответ от 192.168.1.1: Заданный узел недоступен.
    Ответ от 192.168.1.1: Заданный узел недоступен.
    Ответ от 192.168.1.1: Заданный узел недоступен.
    Ответ от 192.168.1.1: Заданный узел недоступен.

    Я так понимаю это не является той ошибкой которую должен контролировать ваш скрипт,и он просто выполняется по кругу как будто всё в поряде,хотя на самом деле всё не так
     
    вот ещё добавлю код моего батника который передёргивает модем(може там его как то по особенному сделать надо)

    Код:
    @echo off
    :loop
    echo -----------------
    echo Start program...
    ZTnBatch -h 192.168.1.1 -p 1981 -c "sys reboot 0"  
    if not errorlevel=0 (
                    echo Connect Error! Restart...
                    goto loop
                    )
    echo Connect OK! Wait ~180 sec...  
    sleep 180

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 21:46 26-04-2010 | Исправлено: max200701, 21:51 26-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701
    проверь так
    @echo off  
    :inetchk  
    ping 66.102.13.19>nul 2>&1  
    if "_%errorlevel%" equ "_0" (  
    rem 1 second pause  
    ping -n 2 localhost>nul 2>&1  
    goto:inetchk  
    ) else (  
    echo.hi
    pause  
    )
     
    так работает?..

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:51 26-04-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701
    ping www.google.ru|findstr /i /v "TTL"

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 21:53 26-04-2010
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    max200701  
    проверь так  
    @echo off  
    :inetchk  
    ping 66.102.13.19>nul 2>&1  
    if "_%errorlevel%" equ "_0" (  
    rem 1 second pause  
    ping -n 2 localhost>nul 2>&1  
    goto:inetchk  
    ) else (  
    echo.hi  
    pause  
    )  
     
    так работает?..
    вот токо я не понял ,а как и куда в этот код мой кусок кода добавить?????
     

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 21:58 26-04-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хотя пожалуй не так:
    Код:
    ping www.google.ru|findstr /i "TTL"


    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 22:00 26-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701

    Цитата:
    вот токо я не понял ,а как и куда в этот код мой кусок кода добавить?????  

    то есть работает? тогда дело в твоем куске кода....

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:01 26-04-2010
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Хотя пожалуй не так:
    Код:ping www.google.ru|findstr /i "TTL"

    ребят ,не пинайте очень,но я дуб в этиж делах,обясняйте пожалуйста что делает ваш код,и как к нему прикрутить мой

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 22:02 26-04-2010
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701

    Цитата:
    просто выполняется по кругу как будто всё в поряде,хотя на самом деле всё не так  

    А разве не это требовалось? Если он не обнаруживает http://www.google.ru/ (либо другой гарантированный сервер), то пишет run script (это должно быть заменено вашем переконектом). Добавь "Echo off" в первую строку, и он будет выдавать ( без мусора) "run script" при недоступности адреса.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 22:04 26-04-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701
    ищет в результате выполнения команды пинг сочетание TTL без учета регистра и если не находит возвращает ошибку...
    Твой код вставлять в код NIKZZZZ там где Echo run script


    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 22:05 26-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425

    Цитата:
    подскажите чем отработать прерываемую паузу в несколько секунд?  
    в смысле - надо написать сообщение, подождать 10 секунд или до нажатия любой кнопки (что раньше), продолжить выполнение батника.  

    msg /?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:14 26-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    pps: а проверить (не останавливаясь) из батника нет ли в клавиатурной очереди консоли в данный момент нажатой кнопки - как-то можно ?

    не понял
     

    Цитата:
    ps: батник может быть запущен многократно, в несколько окон с разными параметрами.  
     

    тогда не знаю
     

    Цитата:
    э... А как? пример можно?

    утилитой nircmd

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 22:28 26-04-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Цитата:
    msg /?
    угу. надо примерно это - но без появления лишних окон, непосредсвенно в текущей консоли.
     

    Цитата:

    Цитата:
    pps: а проверить (не останавливаясь) из батника нет ли в клавиатурной очереди консоли в данный момент нажатой кнопки - как-то можно ?
    не понял  
    ну вот смотри. Выполняется какая-то длинная команда, которая ничего от stdin не хочет. За время её выполнения в консоли можно успеть нажать много кнопочек - и все они достанутся первой из последующих команд, которая попробует читать что-то с клавиатуры.
    Можно ли проверить - есть ли что то в этой очереди?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 22:47 26-04-2010 | Исправлено: wolf0425, 22:56 26-04-2010
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот так всё прекрасно заработало

    Код:
    @echo off    
    :inetchk    
    ping www.google.ru|findstr /i "TTL"    
    if "_%errorlevel%" equ "_0" (    
    rem 1 second pause    
    ping -n 10 localhost 2>&1    
    goto:inetchk    
    ) else (    
    @echo off  
    :loop  
    echo -----------------  
    echo Start program...  
    ZTnBatch -h 192.168.1.1 -p 1980 -c "sys reboot 0"  
    if not errorlevel=0 (  
                    echo Connect Error! Restart...  
                    goto loop  
                    )  
    echo Connect OK! Wait ~120 sec...  
    sleep 180
    goto:inetchk  
    )  

    всем спасибо за помощь,а не подскажите какую строку нужно добавить в этот код ,чтобы всё происходяще писалось в лог файл

    Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 22:48 26-04-2010
    stydent62

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите написать  написать батник который бы копировал  из папки "пополнение" ANS файлы соответственно DIN файлам  в папку RECEIVE. непример если din файл BUH  то копируются все ANS файлы  к этому дину DOCS, BRB, KRS, PBI и т.д. ...  Если в папке еще и Rlaw din то и ANS соответствующий. То есть  копировать надо все ans к базам соответствующего DINA. это все относится к файлам программы Консультант Плюс.

    Всего записей: 25 | Зарегистр. 02-05-2007 | Отправлено: 00:05 27-04-2010
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru