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

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Например на данной странице вывести от
    AdRiver
    до
    target
     
    Добавлено:
    target
    ...
    target
    ...
    AdRiver  
    ...
    AdRiver  
    ...
    target

    ...
    target
    ...
    Получается надо так: Найти самый последний в текстеAdRiver и вниз от него найти самый первыйtarget, хоть в одну строку хоть через несколько строк.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 06:55 06-05-2011 | Исправлено: king_stiven, 07:17 06-05-2011
    ASE_DAG



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    > AdRiver до target  
    $ awk '/target/{delete s; p=1} p==1{s[FNR]=$0} p==1&&/AdRiver/{exit 0} END{for (i in s) print s[i]}' king_stiven.txt
     
    Добавлено:
    > Получается надо так: Найти самый последний в текстеAdRiver  
    > и вниз от него найти самый первыйtarget
    Нет, неправильно.  
    Если хотите опишу алгоритм, записанный на Авке выше словами: находим первый target и начинаем записывать строки в массив; если находим еще один target, сбрасываем записанное и начинаем массив строк заново; по обнаружении AdRiver после target'а (это отличие от прошлой версии) или по концу потока (а вот этого, кстати, вы, возможно, и не желаете, уточните) выводим массив строк.

    Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 11:24 06-05-2011 | Исправлено: ASE_DAG, 11:24 06-05-2011
    wolf0425



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

    Цитата:
    Если хотите опишу алгоритм, записанный на Авке выше словами: находим первый target и начинаем записывать строки в массив; если находим еще один target, сбрасываем записанное и начинаем массив строк заново; по обнаружении AdRiver после target'а (это отличие от прошлой версии)
    у тебя в описании AdRiver и target перепутаны местами относительно требуемого, уж не знаю что в коде...
     
    Добавлено:
    king_stiven, а файле может случиться строка с двумя AdRiver?
    или случиться так, что после последнего AdRiver - нет target, но есть после предпоследнего?
    может проще было давно решить частную задачу в два прохода?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:34 06-05-2011 | Исправлено: wolf0425, 15:05 06-05-2011
    Johny_x3mal



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго времени суток!
    Тут такая задача, надо сменить код MS Office 2007 на компах.  
    Я залез в командную строку и нашел команду reg
     
    REG <операция> [Список параметров]
      <операция> [ QUERY   | ADD    | DELETE  | COPY    |
                       SAVE    | LOAD   | UNLOAD  | RESTORE |
                       COMPARE | EXPORT | IMPORT  | FLAGS ]
     
    Дальше нашел пути в реестре:
     
    HKLM\Software\Microsoft\Office\12.0\Registration\{90120000-0030-0000-0000-0000000FF1CE}\DigitalProductID
    HKLM\Software\Microsoft\Office\12.0\Registration\{90120000-0030-0000-0000-0000000FF1CE}\ProductID
     
    Надо удалить эти два параметра и тогда при открытии офиса пройдет обновление и запросится новый код.
     
    Сама проблема в том, что {90120000-0030-0000-0000-0000000FF1CE} - этот раздел реестра постоянно меняется.
    Вопрос: помогите написать батник, в котором шел бы поиск DigitalProductID и roductID, при нахождении - удалял эти параметры.
     

    Всего записей: 222 | Зарегистр. 07-09-2005 | Отправлено: 15:36 06-05-2011
    res2001



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

    Код:
    @echo off
    for /f "skip=4" %%a in ('reg query "HKLM\Software\Microsoft\Office\12.0\Registration"') do (
        for /f "skip=4 tokens=*" %%b in ('reg query "%%a" /v ProductID 2^>nul') do (
            echo reg delete "%%a" /v ProductID
            echo reg delete "%%a" /v DigitalProductID
    ))

    Проверь, если выводит правильные команды удаления, с нужными ключами реестра, то удаляй echo и будет счастье.

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



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

    Всего записей: 222 | Зарегистр. 07-09-2005 | Отправлено: 16:19 06-05-2011
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ASE_DAG
    Да, спасибо, вроде пашет, пока сильно не гонял.

    Цитата:
     или по концу потока  

    Всегда берётся интервал не до конца потока а до второго выражения, которое всегда есть. Есть описание команд на русском? Вроде как попроще седа.

    Цитата:
    может проще было давно решить частную задачу в два прохода

    Уже решил, но там свои траблы и проходов и соотвественно скачек было до 3-х, некрасиво.
    С авком неплохо замутилось, там тока один файл вроде требуется awk.exe.
     
    Добавлено:

    Цитата:
    опишу алгоритм, записанный на Авке выше словами: находим первый target и начинаем записывать строки в массив; если находим еще один target, сбрасываем записанное и начинаем массив строк заново; по обнаружении AdRiver после target'а  

    отлично

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 16:38 06-05-2011 | Исправлено: king_stiven, 16:45 06-05-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Johny_x3mal
    У тебя какая ОСь? Я тестил на ВинХП. Возможно у тебя reg выводит немного в другом формате. Попробуй поиграться параметром skip в обоих форах.
     
    Добавлено:
    Посмотрел на Вин7, так и есть reg не пишет лишних строк, видимо в семерке skip вообще можно убрать. Полностью протестить не могу - семерка без офиса.

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Спасибо. У меня семерка .  
    Потестю отпишусь.
     
    Добавлено:
    Работает !!!
    Только запрос дает на удаление ....
     
    Добавлено:

    Цитата:
     
    @echo on
    for /f  %%a in ('reg query "HKLM\Software\Microsoft\Office\12.0\Registration"') do (  
        for /f %%b in ('reg query "%%a" /v ProductID 2^>nul') do (  
            reg delete "%%a" /v ProductID /f
            reg delete "%%a" /v DigitalProductID /f  
    ))
     

     
    добавил ключик /f - вроде бы сработало.

    Всего записей: 222 | Зарегистр. 07-09-2005 | Отправлено: 17:16 06-05-2011
    Bezzz

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

    Цитата:
    С авком неплохо замутилось, там тока один файл вроде требуется awk.exe.  

    Ну ты жжОш. awk.exe и есть тот самый Авк. :-D

    Всего записей: 1071 | Зарегистр. 14-04-2005 | Отправлено: 19:36 06-05-2011
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sed из последних идёт ещё с несколькими файлами, это тебе инфа для развития моска.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:26 06-05-2011
    Bezzz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven, давай, блесни своими познаниями, расскажи мне что такое авк, сед, регексп, и всё такое прочее. Особенно надави на то, как их правильно применять. Ты же спец, как я погляжу. Развивай мой моск, умоляю. А я пока посплю ;-D

    Всего записей: 1071 | Зарегистр. 14-04-2005 | Отправлено: 21:42 06-05-2011 | Исправлено: Bezzz, 21:45 06-05-2011
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:09 06-05-2011 | Исправлено: king_stiven, 22:41 06-05-2011
    kostyamks



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

    Всего записей: 284 | Зарегистр. 12-09-2009 | Отправлено: 23:01 06-05-2011 | Исправлено: kostyamks, 04:33 07-05-2011
    Sergei Ivanov

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день. Помогите пожалуйста написать скрипт в bat-файле для резервирования каталога.. Например папку backup на диске D. И чтобы этот скрипт запускался автоматически раз в неделю. Заранее благодарю

    Всего записей: 6 | Зарегистр. 07-05-2011 | Отправлено: 18:22 07-05-2011 | Исправлено: Sergei Ivanov, 18:23 07-05-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Sergei Ivanov
    Не совсем понятен термин "резервирование каталога". Я подозреваю, что это создание резервной копии. Если да, то читай дальше.
    Воспользуйся любым архиватором, например 7z:
    7z a -r d:\backup.7z d:\backup\
    Вставь эту команду в шедулер.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:32 07-05-2011
    Sergei Ivanov

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да, это создание резервной копии. Я уже разобрался как это можно сделать через xcopy, но мне желательно сделать это с помощью команды ntbackup..  И самое главное, как реализовать запуск скрипта раз в неделю... Я уж подумывал просто паузу на неделю поставить, но как то думаю это очень глупо-))

    Всего записей: 6 | Зарегистр. 07-05-2011 | Отправлено: 18:40 07-05-2011 | Исправлено: Sergei Ivanov, 18:43 07-05-2011
    Bezzz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sergei Ivanov, ось какая? Если Win 7 то тебе не повезло - в семерке ntbackup отсутствует. Ну а раз в неделю можно запускать с помощью планировщика заданий. На крайняк есть консольная at

    Всего записей: 1071 | Зарегистр. 14-04-2005 | Отправлено: 20:28 07-05-2011 | Исправлено: Bezzz, 20:32 07-05-2011
    Sergei Ivanov

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я знаю что на вин7 его нет.. XP ось.. Bezz, проблема в том и состоит, что моя задача сделать скрипт ( не использую доп. программ) для бат-файла ... Используя ntbackup

    Всего записей: 6 | Зарегистр. 07-05-2011 | Отправлено: 21:14 07-05-2011
    Bezzz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sergei Ivanov, а что мешает сделать

    Код:
    ntbackup /?

    ?
    Это не скрипт, и не бат. Просто строчка в планировщике заданий.

    Всего записей: 1071 | Зарегистр. 14-04-2005 | Отправлено: 22:01 07-05-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