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

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

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

KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

hErAx

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

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

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

  • Отправлено: 01:53 25-10-2015 | Исправлено: Paromshick, 21:51 18-12-2017
    nick7inc



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Задачи на bat-файлах 11 пропала.

    ----------
    Джин, не лезь в бутылку.

    Всего записей: 1138 | Зарегистр. 04-05-2007 | Отправлено: 12:06 03-11-2015
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    пропала она видать не с проста.
     
    вопрос такой. у беспроводной сети, созданной сетевым адаптером, из за ошибки драйверов скорее всего, падает уровень сигнала практически до нуля. остается только перезапуск.
    во первых так и не смог найти правильный синтаксис команды netsh для перезапуска сетевого соединения. devcon работает, но с ним переключается сетевой канал. как сделать, чтоб проверить состояние сети - уровень сигнала, есть ли присоединенные клиенты и в случае если он низкий и клиенты отсутствуют его перезапустить

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:05 03-11-2015
    taborzykh



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята назрел такой вопросец! Имеется некое количество файлов формата XML в которых надобно заменить пару конкретных значений. все эти файлы по разному называются но лежат в одной папке! Можно ли как то написать такой код чтобы автоматически сканировала эти xml файлы и исправляла нужные строки?  

    Всего записей: 296 | Зарегистр. 09-01-2015 | Отправлено: 20:16 05-11-2015
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    taborzykh можно
    http://forum.ru-board.com/topic.cgi?forum=2&topic=2922&start=16&limit=1


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11719 | Зарегистр. 10-12-2003 | Отправлено: 12:19 09-11-2015
    alexagf



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Задача: дождаться появления процесса AAA.exe и после его завершения запустить процесс BBB.exe.
    Как?

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 13:57 09-11-2015
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    да никак. пока батник будет тупить процесс может начаться и кончится десять раз
     
    Добавлено:
    проще процесс ААА батником и запускать

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:38 09-11-2015
    alexagf



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Нет, процесс AAA запускается автоматически и отрабатывает гарантированно 1 раз.

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 15:30 09-11-2015
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alexagf
    Вам правильно сказали, что весь вопрос в том, сколько времени будет работать процесс AAA...
    Можно, конечно, запустить батник резидентом с постоянным циклом до обнаружения процесса, но гарантии нет никакой, что процесс не будет запущен и завершен в процессе отсчета времени до начала сканирования всех процессов.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:45 09-11-2015
    alexagf



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Хорошо, вернее плохо
    Дело в том, что я батником запускаю процесс ХХХ, когда он отрабатывает, автоматически запускается процесс AAA (на это я повлиять не могу). И вот после его закрытия мне нужно запустить процесс ВВВ.
    Никак не решить? AutoIT не поможет?

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 16:22 09-11-2015
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    сам придумай как не дать остановится процессу до некоей проверки
     
    Добавлено:
    замени файл AAA.exe на другой который запускает настоящий

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:32 09-11-2015
    alexagf



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

    Цитата:
    замени файл AAA.exe на другой  

    Это невозможно.

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 16:44 09-11-2015
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    доброе время.
    Возможно  поймать запуск ААА через VBS ExecNotificationQuery. TargetInstance вроде CIM_Process.
    Завтра буду возле компа - напишу/проверю.

    test.vbs

    Код:
     
    Set objWMIService = GetObject("winmgmts:")
    Set oWshShell = CreateObject("WScript.Shell")
    Set colMonitoredProcesses =  objWMIService.ExecNotificationQuery("select * from __instancedeletionevent within 5 where TargetInstance isa 'Win32_Process'")
    Do
      With colMonitoredProcesses.NextEvent
        If (LCase(.TargetInstance.Name) = LCase("AAA.EXE"))  Then
          MsgBox .TargetInstance.Name & " закрыт."
          oWshShell.Run "BBB.exe"
          Exit Do
        End If
      End With
    Loop
     


    Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 18:05 09-11-2015 | Исправлено: Alex_Piggy, 14:21 10-11-2015
    nik4z



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

    Цитата:
    AutoIT не поможет?

    Думаю, поможет, примерно так
     

    Код:
    Run('XXX')
    WinWait('AAA')
    WinWaitClose('AAA')
    Run('ВВВ')

     
    Или, так

    Код:
    Run('XXX.exe')
    ProcessWait('AAA.exe')
    ProcessWaitClose('AAA.exe')
    Run('ВВВ.exe')

     
     
    В скрипте только нужно только правильно указать процесс AAA, его можно определить на основание того, что он только один , но если их несколько - нужно определять, чем он запущен, а здесь уже не четырьмя  строчки не обойдешься .

    Всего записей: 218 | Зарегистр. 08-11-2015 | Отправлено: 22:22 09-11-2015 | Исправлено: nik4z, 15:46 10-11-2015
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:29 09-11-2015
    alexagf



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

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 06:26 10-11-2015
    nik4z



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

    Всего записей: 218 | Зарегистр. 08-11-2015 | Отправлено: 15:49 10-11-2015
    Taran2ul



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Люди. Помогите пожалуйста оптимизировать код:

    Код:
    goto checker
    :check
    cls
    echo Programm: %Prog%
    echo Memory: %Mem%
    echo Wait...
    :checker
    @for /f "tokens=1,5 delims= " %%i in ('tasklist /FI "IMAGENAME eq progr1.exe" /NH') do @set Mem=%%j && @set Prog=%%i && @goto check
    @for /f "tokens=1,5 delims= " %%i in ('tasklist /FI "IMAGENAME eq progr2.exe" /NH') do @set Mem=%%j && @set Prog=%%i && @goto check
    @for /f "tokens=1,5 delims= " %%i in ('tasklist /FI "IMAGENAME eq progr3.exe" /NH') do @set Mem=%%j && @set Prog=%%i && @goto check

    Первоначально была одна программа, потом после увеличения их числа код стал громоздким и "медленным". Хотелось бы оптимизировать если возможно.

    Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 20:20 11-11-2015
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Taran2ul
    тогда уж, хотя бы так:

    Код:
    @goto checker
    :checker
    @for /f "tokens=1,5" %%i in ('tasklist /NH^|findstr /i /r "progr[1-3]"') do @set Mem=%%j && @set Prog=%%i &&@call :check
    @pause
    @goto EOF
     
    :check
    @echo Programm: %Prog%
    @echo Memory: %Mem%
    @echo Wait...
    @exit /b

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 05:58 12-11-2015
    Taran2ul



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2
    Все дело в том, что (моя вина, сразу не указал) progr1.exe ... progrN.exe - это для примера.
    Там разные имена программ. К примеру explorer.exe, svchost.exe, ..., csrss.exe. Поэтому в регулярном выражении нужно их перечислить все (как я понимаю), но

    Код:
    ...findstr /i /r "explorer.exe|svchost.exe"...

    не работает.
     
    UPD
    Спасибо. Работает с &&

    Код:
    ...findstr /i /r "explorer.exe && svchost.exe"...

    Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 09:39 12-11-2015 | Исправлено: Taran2ul, 09:54 12-11-2015
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 12
    KLASS (06-03-2018 00:44): Объединение тем по сценариям: Сценарии Windows


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru