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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Tim72



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


    Код:
    Chcp 866
    echo Кириллица
    REG EXPORT HKEY_CURRENT_USER\Software\Classes\.jpeg .jpeg-backup.reg
    Chcp 1251
    echo Кириллица
    REG EXPORT HKEY_CURRENT_USER\Software\Classes\.jpeg .jpeg-backup.reg
    pause
    IF "%Restarted%" == "" (
        set Restarted=yes
        cmd.exe /c %0 %* >LOG.txt
        EXIT /b %ERRORLEVEL%
    )
    exit

    в результате получаю следующую картинку:
       
    LOG.txt

    WinXP-SP3-RUS
    Хотелось бы, чтоб в логфайле все было в одной кодировке...
    ....
    разобрался, эксперимент был не корректный, при переключении в 1251, нужно также, менять кодировку самого батника
    на свежую голову все видится иначе, чем в пол-пятого ночи...

    Всего записей: 2480 | Зарегистр. 16-02-2002 | Отправлено: 04:34 27-04-2010 | Исправлено: Tim72, 14:25 27-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    то есть, у тебя в скрипте идет ветвление в зависимости от нажатия клавиши (событие 1 )  или окончания паузы (событие 2 )  ...
    то есть, редуцируя дальше, нужно узнать видел ли юзер сообщение или на тот момент он отсутсвовал за терминалом...
    если задача такова, то может подойти к ней с "другой стороны" ?
     

    Цитата:
    Можно ли проверить - есть ли что то в этой очереди?

    пробовал

    Код:
    systeminfo
    systeminfo
    rem copy con 5.txt 2>&1
    set /p var=<con 2>&1
    pause
    cmd

    очередь "вытаскивается" , но батник стопорится, пока enter не введешь

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 09:36 27-04-2010 | Исправлено: mugil_cephalus, 10:07 27-04-2010
    wolf0425



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

    Цитата:
    очередь "вытаскивается" , но батник стопорится, пока enter не введешь
    надо то не enter - надо аникей
     
     
    Добавлено:
    Tim72

    Цитата:
    Помогите разобраться с кодировками
    запускаю следующий батник  

    Цитата:
    Хотелось бы, чтоб в логфайле все было в одной кодировке...  
    не похоже что хотелось бы - ты же сам кодировку переключаешь посреди батника.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 10:20 27-04-2010 | Исправлено: wolf0425, 10:30 27-04-2010
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    помоги пожалуйста в AOL тоже. несмог подправить твой sed:

    Цитата:
     
    Mon 2010-04-26 08:24:56: [6546:1] <-- 550 5.1.1 <nosway145@aol.com>: Recipient address rejected: aol.com
     

    sed -n -r "s/^.+[ \(]([^ @]+@[^ \)]+)[ \)].+$/\1/gp" <%report% >>%report%
    спасибо.

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 10:49 27-04-2010 | Исправлено: slech, 10:51 27-04-2010
    wolf0425



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

    Код:
     
    sed -i -r "s/^.*[ <(]([^ @]+@[^ >)]+).*$/\1/g" %report%
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 11:45 27-04-2010 | Исправлено: wolf0425, 12:44 27-04-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Что это за \x3c и \x3e ???
    Пытался играться с \w \d и \s, но путного ничего не вышло.
    Пришел к выводу, что для меня проще запись вида:
    Код:
    sed -n -r "s/^.+[^a-z0-9]([a-z0-9._-]+@[a-z0-9._-]+).+$/\1/gp" <log.txt

    По крайней мере ясны условия отбора.
     
    Slech
    Смотри: в первых квадратных скобках перечисляются символы предваряющие email (здесь "^" это отрицание, т.е не цифра и не буква), затем в круглых скобках указываются параметры, по которым определяется email: допустимые символы (буквы, цифры, точка, дефис и подчеркивание) затем "собака", затем опять (буквы, цифры....)

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 12:20 27-04-2010 | Исправлено: Joo1z, 12:32 27-04-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Joo1z
    Цитата:
    Что это за \x3c и \x3e ???  
    хекскоды <> соответственно, но оказалось что и не надо - экранировать <> там необязательно
     
    регэксп печатает нечто стоящее между ограничителями/скобками если оно имеет @ в середине.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:39 27-04-2010 | Исправлено: wolf0425, 12:55 27-04-2010
    Tim72



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

    Цитата:
    не похоже что хотелось бы

    а если посмотреть на пример как на четыре батника, то похоже?
    два варианта кодировки (866|1251), и два варианта вывода информации (консоль|файл)
    причем в каждом из четырех случаев получается каша из кодировок...

    Всего записей: 2480 | Зарегистр. 16-02-2002 | Отправлено: 13:07 27-04-2010 | Исправлено: Tim72, 14:15 27-04-2010
    wolf0425



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

    Цитата:
    а если посмотреть на пример как на четыре батника, то похоже?  
    и на пример четырех батников не похоже.
    юзер вправе специально написать батник, последовательно выводящий в файл в четырех разных кодировках. Проблема только в том когда юзер после этого удивляется - а чего это в файле четыре разные кодировки.
     
    Добавлено:

    Цитата:
    два варианта кодировки (866|1251), и два варианта вывода информации (консоль|файл)  
    там два скриншота от разных режимов показа одного файла лога, вызванного одним проходом батника, в котором специально переключается кодировка вывода системных сообщений.
    когда ты пишешь в тетрадке сначала синей ручкой, потом красной - ты тоже ко всем пристаешь с вопросами почему у тебя надписи в тетрадке разноцветные, хотя тебе хотелось бы иметь их одноцветными?
     
    ps: чтобы на экране видеть поменьше каши - фонт у консоли надо ставить уникодный, тогда хоть в консоли сообщения reg всегда будут читаться.
    А с логом - облом, он то пишется в текущей.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tasklist - возвращает Mem usage per process
    какая прога может вернуть CPU usage per process?

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mouser
    Уильям Станек - Командная строка Microsoft Windows
    там раздел по процесам, pmon кажется (из reskit'a )

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    нашел прогу ... но там нет  CPU Usage

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mouser
    Цитата:
    нашел прогу ... но там нет  CPU Usage

    PsTools: pslist.exe -s 2
    у второй страницы процессов - CPU Usage заполнено...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:06 27-04-2010 | Исправлено: wolf0425, 16:15 27-04-2010
    vov4ka



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    А можно мне батничек,который выводит список всех компов(NetBios имена и Ip адреса),находящихся в сети в тесктовый файл?
     
    P.S.
    Цитата:
    Напиши в командной строке "REG ADD /?" и "FOR /?" и почитай. К тому же все есть в шапке.

    Ответа на свои вопросы я не нашел ни в шапке и в командной строке(описыватеся не все)
     

    Всего записей: 110 | Зарегистр. 29-01-2009 | Отправлено: 08:13 28-04-2010 | Исправлено: vov4ka, 08:13 28-04-2010
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    да ... это там есть ... а как из этого сделать чтоб если CPU per process > 80% тогда его отстрелить  
    как ??? (((

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



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

    Код:
    for /f %a in ('net view ^| sed -r -n "s/^\\\\([A-Z0-9-_]+)[ ]/\1/gp"') do @ping -n 1 %a | findstr [ | sed -r -n "s/^.+[\[]([0-9.]+).+$/\1 - %a/gp" >> pclist.txt

    Для этого нужен sed.
    Наверняка можно проще, например: сначала
    Код:
    net view | findstr \\ >>pl1.txt
    вывести в файл, а затем из файла
    Код:
    for /f "tokens=1 delims=\\ " %b in (pl.txt) do @ping -n 1 %b | findstr [192 >>pl2.txt

    Можно через nslookup. Может есть вообще готовая утилита.
     

    Цитата:
    Ответа на свои вопросы я не нашел ни в шапке и в командной строке(описыватеся не все)  

    ВСЕ там есть. Может проще начать с азов.
     
    mouser
    У тебя тогда все время он будет пытаться завалить Ilde.
    Можешь попробовать замутить что-нть на базе этого:
    Код:
    for /f "tokens=1,3" %f in ('pslist.exe -s 2 ^| findstr /v /i idle') do @echo %f %g

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 10:27 28-04-2010 | Исправлено: Joo1z, 11:10 28-04-2010
    wolf0425



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

    Цитата:
    а как из этого сделать чтоб если CPU per process > 80% тогда его отстрелить  
    как ??? (((
    for /?  if /? taskkill.exe /?
     

    Цитата:
    У тебя тогда все время он будет пытаться завалить Ilde.
    проверить имя процесса на исключения - не проблема, и что полезно - >=80 будет единственный процесс. Второй кандидат на заваливание -  svchost
     
    Но непонятно откуда вообще взялась идея убивать активный неизвестный процесс, так что нет уверенности что ему это вообще надо...

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Joo1z
     
    вот к примеру выводит CPU usage firefox
    for /f "tokens=1,3" %f in ('pslist.exe -s 2 ^| findstr /C:"firefox"') do @echo %g >>fsfd
     

    Код:
    0  
    7  
     

     
    выходит 3 строки ... можно прчитать строку а потом сверить если число более числа 80 выполнить к примеру отстрел процесса  
     
    как ?????? вроде можно используя sed но я в него ни как не въезжаю (((  
    HELP )))

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



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

    Код:
    for /f "tokens=3" %z in ('pslist.exe -s 2 ^| findstr /i "firefox"') do @if %z geq 80 @echo KILL!!! KILL!!! KILL!!!

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 12:11 28-04-2010 | Исправлено: Joo1z, 12:22 28-04-2010
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Joo1z
    тоже верно если не цеплятся к PID

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 12:38 28-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