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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    smirnvlad

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

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 22:13 01-08-2009
    slech



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

    Цитата:
                    <td><div class="page #1"></div></td>
     

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

    Цитата:
     
    page #1
     

     
    и как сделать что бы во время цикла значение set page=page1 обнулялось что ли, т.е.
    идём по циклу значение  
    set page=page1
    проходим второй раз а в результате работы цикла у нас нету никакого значения, но в результирующий файл пойдёт
    echo %page% >>list.txt
    и снова попадёт значение из работы предыдущего прохода.
    как  обнулить %page% после echo %page% >>list.txt ?
     
    спасибо.

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 01:54 02-08-2009 | Исправлено: slech, 12:59 02-08-2009
    slech



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

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 13:01 02-08-2009
    01MDM



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

    Цитата:
    осталось только возможнось зачистить строчку.


    Код:
     
    @echo off
    setlocal
     
    set "string=       <td><div class="page #1"></div></td>"
     
    set "string=%string:<=%"
    set "string=%string:>=%"
    set "string=%string:"=$%"
     
    for /f "tokens=2 delims=$" %%i in ("%string%") do echo %%i
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:19 02-08-2009
    slech



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

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 14:41 02-08-2009
    slech



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

    Цитата:
     
    Set input_file=url_log.txt
    For /F "Delims=" %%a In (%input_file%) Do Set status_code=%%a & GOTO :SC_ERRORLEVEL_NEXT
     

    эти строки берут файл url_log.txt и перую его строку кидают в переменную окружения status_code, а в самом конце пишут её в результирующий файл.
    если файла нету то мне нужно об этом както узнать например получить %ERORRLEVEL%  
    но у меня никак не получается вмешаться в эту конструкцию
    если убрать
    Цитата:
    & GOTO :SC_ERRORLEVEL_NEXT

    то вообще работать не хочет, если его заменяют на
    Цитата:
    & set status_code=%ERORRLEVEL%
    так же не работает.
     
    подскажите как получить код ошибки после операции чтения первой строки файла, т.е. если файла не оказалось то мне нужно в результат записать что файла небыло.
     
    спасибо

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 19:13 02-08-2009 | Исправлено: slech, 19:23 02-08-2009
    01MDM



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

    Код:
     
    :: Если файл существует, берем из него первую строку. Если нет - пишем ошибку в лог.
     
    if exist url_log.txt (
         set /p input_file=<url_log.txt
    ) else (
         echo file not exists 1>>log.txt
    )  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:48 02-08-2009
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    я сейчас тоже об этом подумал - но есть проблема - c cURL сработает - он не создаёт файла если несмог скачать ничего, а вот Wget создаёт даже пустой файл и тут это не пройдёт.
    может можно по другому обойти ?

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 22:53 02-08-2009 | Исправлено: slech, 22:54 02-08-2009
    01MDM



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

    Код:
     
    if exist url_log.txt (
              set /p input_file=<url_log.txt
    )
    if not defined input_file (  
              echo url_log.txt not exists or it is empty 1>>log.txt
              rem set input_file=ERROR
    )
     

     
    Только когда будешь тестировать не забудь в начале батника поставить setlocal (чтоб избежать ошибок с переменными при повторном вызове батника)

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:26 02-08-2009
    slech



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

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 00:00 03-08-2009
    mouser

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

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 09:30 03-08-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mouser
    Утилита nircmd (в шапке).

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:26 03-08-2009
    YTs Jeam



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет, помогите составить батник, который бы закрывал приложение - Program.exe, если оно запущено.

    Всего записей: 142 | Зарегистр. 03-06-2004 | Отправлено: 13:26 03-08-2009 | Исправлено: YTs Jeam, 13:32 03-08-2009
    Maza_Faka



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

    Код:
     

    Taskkill /F /IM Program.exe

     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 13:35 03-08-2009
    bredonosec



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

    Всего записей: 16269 | Зарегистр. 13-02-2003 | Отправлено: 14:56 03-08-2009
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bredonosec
    Я юзал прямо из командной строки: for /f %i in ('net view | findsr \\') do @sc %i start messenger .

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 16:08 03-08-2009
    SeriouSShat

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужна помощь.  
    Делаю скрипт, который будет отсылать сообщение при возникновении нового события в программе (HP OV NNM 8). Для отправки использую софтину postie. В настройках NNM, указано использовать traptomail.bat и какую информацию отсылать:
    traptomail.bat $sourceObjectName Host:$sourceObjectName Address:$managementAddress State:$name Status:$severity
     
    Сам traptomail.bat выглядит следующим образом:
    @echo off
    echo ***** HP OV NNM ***** >> D:\HP\test.txt
    set node=%1
    SHIFT
    :Loop
    IF "%1"=="" GOTO Continue
    echo %1 >> D:\HP\test.txt
    SHIFT
    GOTO Loop
    :Continue
    "D:\HP\postie.exe" -host:post.server.ru -port:25 -hide -to:my@mail.com -from:nnm@mail.com -verify -s:"NODE DOWN! Alert for %node%." -file:D:\HP\test.txt -rm
     
    В итоге админ получает следующее письмо:
    Тема: NODE DOWN! Alert for cisco2821.domen.ru
    ***** HP OV NNM *****  
    Host:cisco2821  
    State:NodeDown  
    Status:Critical  
    Address:10.0.0.1
     
    Как добавить вот этот скрипт
     
    @echo off
    Set File=test.txt
    Set Num=1
     :Loop
    If Not Exist %File% Goto EndLoop
    For %%a In (%File%) Do (
    Set FName=%%~na
    Set FExt=%%~xa)
    Set NewFName=%FName%_%Num%%FExt%
    Set /a Num=%Num% + 1
    (If Exist %NewFName% Goto Loop) && (Set NewFName=%NewFName%)
    Set File=%NewFName%
     :EndLoop
    Echo %File%
     
    в мой, чтобы когда создается файл test.txt, он имел уникальное имя?

    Всего записей: 8 | Зарегистр. 04-08-2009 | Отправлено: 15:59 04-08-2009 | Исправлено: SeriouSShat, 16:04 04-08-2009
    testir



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток,
    подскажи как сделать
    есть список каталогов.  в этих каталогах нужно искать подкаталоги с определенным именем, находя эти подкаталоги - удалять, среди этого списка есть каталоги,  которые нужно просто пропускать не заходя в них.
    например.
    folder1
             folder1.1
             folder1.2
    folder2
             folder2.1
             folder2.2
             folder2.3
     
    folder3
             folder3.1
             folder3.2
             folder3.3
                          folder3.1.1
                          folder3.1.2
                          folder3.1.3
    folder4
     
    нужно пропустить  folder1, удалить folder2.2  folder3.3 пропустить folder4 и т.д
     
    РЕшение нужно сделать  на cmd

    Всего записей: 15 | Зарегистр. 14-02-2007 | Отправлено: 17:17 04-08-2009 | Исправлено: testir, 17:18 04-08-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    testir
     
    в этих каталогах нужно искать подкаталоги с определенным именем,
    эти имена берутся из второго списка?
     
    есть каталоги,  которые нужно просто пропускать не заходя в них
    эти имена берутся из третьего списка?

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 17:59 04-08-2009
    testir



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Есть общий список к примеру с каталогами в которые не нужно заходить (пропускать их).
    Как я предполагал сделать, сравнивать имеющиеся каталоги со списком каталогов исключения(те которые нужно пропускать)
    допустим есть одно название  каталога -  folder10, и есть на диске С дерево каталогов,
    нужно пройти по всем каталогам найти в них подкаталоги с названием  folder10 и удалить их,
    учитывая каталоги исключения (список) в которые заходить не нужно, если не понятно постораюсь еще как-то объснить )

    Всего записей: 15 | Зарегистр. 14-02-2007 | Отправлено: 18:20 04-08-2009
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru