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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет,поскольку я не силён в написании бат файлов,то прошу помощи у знающих людей,требуется следущее:пинговать постоянно какойто сервер,ну например ya.ru и в том случае если пинг не прошёл, выполнить вот этот код

    Код:
    @echo off
    :loop
    echo -----------------
    echo Start program...
    ZTnBatch -h 192.168.1.1 -p 1111 -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 | Отправлено: 18:19 25-04-2010
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    max200701
    тебе мой вариант поможет ... принцип такой что если не скачана страница идёт разсоединение с инетом и затем попытка соединится ... так же можно твоё всунуть
     

    Код:
     
    @Echo off
    del /q index.html.*
    :START
    :RASDIAL_start_reconnect
    cls
    if exist index.html del /Q index.html
    wget.exe http://www.google.com --tries=3 --quiet
    if %errorlevel% NEQ 0 (goto :RASDIAL_if_else) else (goto :NEXT)
     
     
    REM ===========================================================================
    :RASDIAL_if_else
    if exist index.html del /Q index.html
    wget.exe http://www.yandex.ru --tries=3 --quiet
    if %errorlevel% NEQ 0 (echo.) else (goto :NEXT)
    echo.>>Reconnect.log
    echo -^>^>^>Disconnect   %date%__%time% -------------------------------------->>Reconnect.log
    rasdial Fregat /disconnect>>Reconnect.log
    :RETRY_reconnect
    sleep.exe 5
    echo.>>Reconnect.log
    echo -^>^>^>Connect      %date%__%time% -------------------------------------->>Reconnect.log
    rasdial Fregat dmitriy32 xxCME733>>Reconnect.log
    if %errorlevel% NEQ 0 (goto :RETRY_reconnect) else (goto :NEXT)
    REM ===========================================================================
    :NEXT
    :sleep
    echo sleep 2 min %time:~0,8%>sleep.log & sleep.exe 120
    goto :START
     

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 22:40 25-04-2010
    wolf0425



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

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:53 25-04-2010
    BUGL



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    приветсвую.
    когда исполняется bat есть возможность выделить его содержимое. когда включен режим выделения не выводиться echo. это критично для моего batника.
     
    bat запускаю через другой bat.
     
    как можно отключить режим выделения в bat?
    спасибо.

    Всего записей: 97 | Зарегистр. 09-10-2004 | Отправлено: 00:07 26-04-2010
    max200701

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mouser
    Огромное вам спасибо за помощь,но возникли вопросы,и если бы вы на них дали ответы,то для меня многое бы прояснилось.
    Сделал под себя так
    Код:
    @Echo off  
    del /q index.html.*  
    :START  
    :RASDIAL_start_reconnect  
    cls  
    if exist index.html del /Q index.html  
    wget.exe http://www.google.com --tries=3 --quiet  
    if %errorlevel% NEQ 0 (goto :RASDIAL_if_else) else (goto :NEXT)  
     
     
    REM ===========================================================================  
    :RASDIAL_if_else  
    if exist index.html del /Q index.html  
    wget.exe http://www.yandex.ru --tries=3 --quiet  
    if %errorlevel% NEQ 0 (echo.) else (goto :NEXT)  
    echo.>>Reconnect.log  
    echo Start program...
    ZTnBatch -h 192.168.1.1 -p 1980 -c "sys reboot 0"  
    if not errorlevel=0 (
                    echo Connect Error! Restart...
                    goto loop2
                    )
    echo Connect OK! Wait ~180 sec...
    sleep 180
    if %errorlevel% NEQ 0 (goto :RETRY_reconnect) else (goto :NEXT)  
    REM ===========================================================================  
    :NEXT  
    :sleep  
    echo sleep 20 sek %time:~0,8%>sleep.log & sleep.exe 20  
    goto :START

    Подскажите правильно или нет(что-то мне подсказывает ,что что-то не так)
    У вас этот скрипт выполняется скрытым - как бы сделать чтобы было видно ход выполнения всего скрипта.
    Благодарю за понимание
     

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    http://wiki.oszone.net/index.php/%D0%9F%D0%B0%D1%83%D0%B7%D0%B0_%D0%B2_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D0%BE%D0%BC_%D1%84%D0%B0%D0%B9%D0%BB%D0%B5
     
    Добавлено:
    BUGL
    если речь идёт о том что при зажатии кнопкой мыши текст выделяется ...  
     
    не помню как называется строка где кнопка свернуть, развернуть и закрыть нах. .. вообщем нужно правой клавишой мыши нажать и зайти в свойство окна где нужно будет убрать галку с "выделение мышью"

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 00:51 26-04-2010
    slech



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

    Цитата:
     
    MDaemon-20100424-SMTP-(out).log:Sat 2010-04-24 07:11:10: [6642:4] <-- 554 delivery error: dd This user doesn't have a yahoo.com account (becca9317@yahoo.com) [-5] - mta1059.mail.sp2.yahoo.com
    MDaemon-20100424-SMTP-(out).log:Sat 2010-04-24 08:43:23: [9401:3] <-- 554 delivery error: dd This user doesn't have a yahoo.com account (blondegal67@yahoo.com) [-5] - mta112.mail.ac4.yahoo.com
    MDaemon-20100424-SMTP-(out).log:Sat 2010-04-24 13:12:41: [7312:1] <-- 554 delivery error: dd Sorry your message to carrie.arnold36@yahoo.com cannot be delivered. This account has been disabled or discontinued [#102]. - mta1078.mail.re4.yahoo.com
    MDaemon-20100424-SMTP-(out).log:Sat 2010-04-24 16:13:12: [2703:2] <-- 554 delivery error: dd This user doesn't have a yahoo.com account (clarkeshark@yahoo.com) [-5] - mta113.mail.ac4.yahoo.com
    MDaemon-20100424-SMTP-(out).log:Sat 2010-04-24 19:13:01: [7364:1] <-- 554 delivery error: dd Sorry your message to cyleightor@yahoo.com cannot be delivered. This account has been disabled or discontinued [#102]. - mta1040.mail.sp2.yahoo.com
     

    получить список почтовых адресов ?
    спасибо.

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 09:11 26-04-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mouser так которая из описанных там команд делает нужную паузу то?  
    Я что-то ни одной подходящей не вижу.
    Ну кроме варианта писать её на скрипте самому.
     
     
    Добавлено:
    slech так подойдет?

    Код:
    sed -n -r "s/^.+[ \(]([^ @]+@[^ \)]+)[ \)].+$/\1/gp" <log.txt  


    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 09:17 26-04-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    А через утилиту из ресорс-кита 2003 choice.exe тебя не устроит?
    Список выбора можно скрыть и пауза перед выбором по-умолчанию делается...
     
    Добавлено:
    Правда пауза может быть только в секундах...

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 09:32 26-04-2010
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    спасибо, буду проверять.
    у меня почему-то в Windows XP есть эта утилита, а в Windows 2003 нету.
    Это gnu sed ?

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 10:09 26-04-2010
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    за мой вопрос не забыли ???  
     

    Цитата:
    нужно убить процесс если он ушел в >80% загрузку CPU  


    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 10:38 26-04-2010
    slech



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

    Цитата:
    Это gnu sed ?

    разобрался, да он.

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 11:52 26-04-2010
    wolf0425



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

    Цитата:
    А через утилиту из ресорс-кита 2003 choice.exe тебя не устроит?  
    там же только строго определенная кнопка прервет ожидание... и пробелом её не назначить... или я что-то не заметил?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:18 26-04-2010 | Исправлено: wolf0425, 13:40 26-04-2010
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    sleep.exe скачай или  
     
    ping -n seconds 127.0.0.1 > nul
    где seconds - желаемое число секунд +1.

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 13:51 26-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Из первого батника запустить второй в свёрнутом или скрытом виде, потом в первом
    pause > nul
    из второго батника после паузы сымулировать нажатие клавиши  ентер

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 14:03 26-04-2010
    kirik64



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В папке имеется около 17000 файлов вида 00001.ext, 00002.ext и т.д. Помогите плз скопировать их по 1000 штук в каталоги вида C:\Temp\1 (первая тысяча), C:\Temp\2 (вторая тысяча) и т.д. В последнем каталоге C:\Temp\17 соответственно не тысяча, а остаток.

    ----------
    god give_health give_ammo give_armor noclip notarget jumpheight 128 timescale 25 - В.Пелевин, "t" (2009)

    Всего записей: 2317 | Зарегистр. 11-12-2006 | Отправлено: 14:36 26-04-2010
    king_stiven

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

    Код:
    set s=1
    set "way=C:\Temp\"
    for /f "usebackq tokens=*" %%d in (`dir *.ext /o /b /a:-d`) do (
        set name=%%d
        set /a sum+=1
        call :wer
        )
    )
    goto :eof
    :wer
    md "%way%%s%" 1> nul 2> nul
    copy "%name%" "%way%%s%" > nul
    if "%sum%"=="1000" (
        set /a s+=1
        set sum=
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:15 26-04-2010 | Исправлено: king_stiven, 16:42 26-04-2010
    JekaRus

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Мне нужно проверять наличие компьютера в сети по списку. Написал такой вариант
    For /F "delims=" %%i In (servers.txt) Do (
    Ping -n 1 %%i >Nul
    If ErrorLevel 1 (echo %%i >> C:\noconnect.txt)
    If ErrorLevel 0 (echo %%i >> C:\connect.txt)
    )
    Почему то все компы попадают в оба списка. Как сделать правильно?

    Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 18:24 26-04-2010
    NIKZZZZ



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

    Цитата:
    Почему то все компы попадают в оба списка. Как сделать правильно?

     
    "If ErrorLevel 0 (echo %%i >> C:\connect.txt)"  выполняет проверку правильности выполнения предыдущей строки "If ErrorLevel 1 (echo %%i >> C:\noconnect.txt)"  
     

    Код:
    If ErrorLevel 1 (
      echo %%i >> C:\noconnect.txt
    ) else (
      echo %%i >> C:\connect.txt
    )  

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

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

    Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 18:42 26-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