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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    res2001



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

    Цитата:
    P.S. Ну не может же так Винду глючить...

    да еще и не так бывало глючило
    А перезагружаться не пробовал?
    Nagual
    Ну по идее если в винде какие-то функции блокированы, например убиение процесса, то скорее всего и в том же диспетчере задач нельзя будет убить процесс.
    fire4x попробуй блокнот кильнуть из диспетчера задач.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:21 11-06-2011
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fire4x
    если сильно не вдаваться в телепатию и т.п., можно заюзать альтернативу
    http://technet.microsoft.com/ru-ru/sysinternals/bb896683

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 17:36 11-06-2011
    fire4x



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

    Цитата:
    выполни eventvwr и смотри там

     
    Не удается запустить сервер DCOM: {...}. Ошибка:
    "Не удается найти указанный файл. "
    возникла при запуске команды:
    C:\WINDOWS\system32\wbem\wmiprvse.exe -Embedding
     
    wmiprvse.exe оказался переименован.
    Не помню моих ли рук дело или нет.
    А если моих, то зачем...
    Какие функции выполняет данный файл?
    P.S. Скиньте кто- нибудь контрольные суммы wmiprvse.exe.

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 17:48 11-06-2011
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fire4x
    f520ab392d58c0a1070268032d809382 *wmiprvse.exe
    ну и тут Repairing and re-registering the WMI еще покури
    вообще уже офтоп пошел, тебе в администрирование и восстановление систем однозначно

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 17:54 11-06-2011 | Исправлено: Nagual, 17:57 11-06-2011
    fire4x



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

    Цитата:
    f520ab392d58c0a1070268032d809382 *wmiprvse.exe

    Не совпадает, зараза
     
    P.S. Как узнать какие службы должны быть запущены для выполнения TASKKILL?

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 18:14 11-06-2011 | Исправлено: fire4x, 18:18 11-06-2011
    res2001



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

    Цитата:
    P.S. Как узнать какие службы должны быть запущены для выполнения TASKKILL?

    Вообще то никакие. Это функция ядра ОС.
     

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:31 11-06-2011
    fire4x



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

    Цитата:
    Цитата:P.S. Как узнать какие службы должны быть запущены для выполнения TASKKILL?  
     
     
    Вообще то никакие. Это функция ядра ОС.

     
    Как видно из моего примера: TASKKILL без wmiprvse.exe работать не хочет.
     
    P.S. Как через батник проверить убился ли через TASKKILL блокнот?

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 18:39 11-06-2011
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    fire4x
    в предыдущем посте кинул ссылку на восстановление wmi
    саму систему попробуй восстановить так
    sfc /scannow
    при этом необходим cd диск с системой
    если не поможет, существует множество других методов
    думаю, оффтоп надо заканчивать
    здесь мы решаем конкретные задачи с помощью командных сценариев

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:39 11-06-2011
    res2001



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

    Цитата:
    Как видно из моего примера: TASKKILL без wmiprvse.exe работать не хочет.  

    На сколько я понял речь об wmiprvse.exe пошла, после того как ты полез смотреть события.
    Ну дык это evenvwr без него не работает, видимо.

    Цитата:
    P.S. Как через батник проверить убился ли через TASKKILL блокнот?  

    tasklist | findstr "notepad.exe" || echo Блокнота нет.
     
    Походу у тебя винда при смерти. Думаю format c: & install windows.exe тебе поможет.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:43 11-06-2011
    fire4x



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

    Цитата:
    На сколько я понял речь об wmiprvse.exe пошла, после того как ты полез смотреть события.  
    Ну дык это evenvwr без него не работает, видимо.

    После того как влез туда я очистил все журналы.
    Потом запустил TASKKILL.
    Потом посмотрел записи после запуска TASKKILL.

     

    Цитата:
    Цитата:P.S. Как через батник проверить убился ли через TASKKILL блокнот?  
     
     
    tasklist | findstr "notepad.exe" || echo Блокнота нет.

    У tasklist те же симптомы
     
    P.S. Задача следующая:
    Убить блокнот
    Проверить, убит ли блокнот
    Если нет, попробовать через PsKill
     
    Дополнительное условие: работоспособность TASKKILL и tasklist - НЕИЗВЕСТНА
     
     

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 19:01 11-06-2011 | Исправлено: fire4x, 19:02 11-06-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    fire4x
    значит юзай pslist и pskill вместо tasklist  и taskkill.
    Проверка с pslist аналогична, тому что я написал с tasklist.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 19:14 11-06-2011
    fire4x



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

    Цитата:
    значит юзай pslist и pskill вместо tasklist  и taskkill.  
    Проверка с pslist аналогична, тому что я написал с tasklist.

     
    P.S. Задача следующая:  
    1) Убить блокнот  
    2) Проверить, убит ли блокнот  
    3) Если нет, попробовать через PsKill
     
     
    1) TASKKILL /F /IM notepad.exe
    2) tasklist | findstr "notepad.exe"
    А как Батник узнает, что tasklist не работает и пора переходить к следующему пункту?
    3) Если нет, попробовать через PsKill

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 19:25 11-06-2011 | Исправлено: fire4x, 19:29 11-06-2011
    res2001



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

    Код:
    TASKKILL /F /IM notepad.exe || pskill notepad.exe


    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 19:30 11-06-2011 | Исправлено: res2001, 19:39 11-06-2011
    fire4x



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

    Цитата:
    Код:TASKKILL /F /IM notepad.exe  
    tasklist | findstr "notepad.exe" || (echo Блокнот убит taskkillом & exit)  
    pskill notepad.exe  
    pslist | findstr "notepad.exe" || (echo Блокнот убит pskillом & exit)  
    echo Блокнот убить не удалось  
     
    Как-то так, не проверял.

     
    Как к этому приделать IF? Так правильно?

    Код:
     
    TASKKILL /F /IM notepad.exe  
    IF tasklist | findstr "notepad.exe" goto 10
    pskill notepad.exe
    :10
     

     
    Засада еще и в том, что при первом запуске и pskill и pslist требуют подтвердить согласие с лицензией.
    А вот как это обойти...

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 19:55 11-06-2011
    res2001



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

    Цитата:
    А вот как это обойти...  

    не знаю.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 20:03 11-06-2011
    fire4x



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

    Цитата:
    Код:TASKKILL /F /IM notepad.exe || pskill notepad.exe

    Увы, но единственный способ - найти куда pskill прописывает в реестр согласие с лицензией и добавить его до выполнения команды...
     

    Цитата:
    ||
    Для чего эта штука?
     

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 20:12 11-06-2011 | Исправлено: fire4x, 20:13 11-06-2011
    res2001



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

    Цитата:
    Для чего эта штука?  

    Выполняет следующую команду в случае, если первая команда завершилась с кодом возврата <>0  
    Есть еще антипод - && - выполняет следующую команду в случае если первая завершилась с errorlevel == 0

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 20:21 11-06-2011
    fire4x



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

    Цитата:
    Цитата:Код:TASKKILL /F /IM notepad.exe || pskill notepad.exe

    В чем разница между

    Код:
    TASKKILL /F /IM notepad.exe || pskill notepad.exe

    и

    Код:
    TASKKILL /F /IM notepad.exe && pskill notepad.exe

     
    А если необходимо противопоставить несколько действий чем разделять команды?
    Например:
     
    Убить блокнот || запустить 1.exe->pskill notepad.exe->запустить 2.exe
     

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 20:51 11-06-2011 | Исправлено: fire4x, 20:51 11-06-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    fire4x
    Выполни команду
    start "" hh ntcmds.chm
    и читай раздел "Общие сведения о командной оболочке"
     
    Добавлено:

    Цитата:
    А если необходимо противопоставить несколько действий чем разделять команды?
    Например:
     
    Убить блокнот || запустить 1.exe->pskill notepad.exe->запустить 2.exe  

     
    Если  я правильно понял твою мысль (убивам блокнот taskkillом, если убился, то запускаем 1.exe, если нет, то убиваем pskillом, убился - запускаем 2.exe):

    Код:
    taskkill notepad.exe && (1.exe & exit)
    pskill notepad.exe && (2.exe & exit)

    Может не париться и сразу убивать pskillом?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 21:16 11-06-2011
    fire4x



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

    Цитата:
    Если  я правильно понял твою мысль (убивам блокнот taskkillом, если убился, то запускаем 1.exe, если нет, то убиваем pskillом, убился - запускаем 2.exe)

     
    НЕТ

    Код:
    Убить блокнот || запустить 1.exe->pskill notepad.exe->запустить 2.exe

    Т.е. если блокнот не убился, то запускается 1.exe после которого происходит pskill notepad.exe а затем запусткается 2.exe
     

    Цитата:
    Выполни команду  
    start "" hh ntcmds.chm
    и читай раздел "Общие сведения о командной оболочке"

     
    А что в кавычки вставлять?

    Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 21:34 11-06-2011
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru