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

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

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

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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XmakcX
    Для того, чтобы обновлялся файл статистики используй netstat c ключом -v
     

    Код:
     
    netstat -e -v 5 >stat.txt
     

     
    Где 5 - интервал обновления в секундах. А что надо узнать из статистики?
       

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:31 02-06-2008
    XmakcX

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    СПАСИБО ОГРОМНОЕ!трафик за период надо узнать.Надо так что при запуске оперы запускался батник и при закрытие тож закрывался и все траффик за этот период отражался в текстовом

    Всего записей: 22 | Зарегистр. 01-06-2008 | Отправлено: 18:49 02-06-2008
    01MDM



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    start "" "%PROGRAMFILES%\Opera\opera.exe"
    :loop
    for /f "tokens=1-3" %%i in ('netstat -e ^| findstr /i "байт"') do (
        echo out: %%j 1>1.txt  
        echo in : %%k 1>>1.txt
        set /a ttl=%%j+%%k
        echo total: !ttl! 1>>1.txt
        ping -n 6 localhost 1>nul
        pslist | findstr "opera" && goto:loop
    )  
     

     
    Все что выделено, надо доработать. У меня нет ни оперы ни tasklist.exe (по-этому написал pslist)
     
    6 - это 5-сек пауза
    Батник надо сохранить в cp866 или дописать chcp 1251 1>nul в начало батника.  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:05 02-06-2008 | Исправлено: 01MDM, 19:14 02-06-2008
    XmakcX

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спасибо-работает.а файл 1.txt формируеться в каталоге запуска оперы?или в каталоги запуска батника?

    Всего записей: 22 | Зарегистр. 01-06-2008 | Отправлено: 19:22 02-06-2008
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:25 02-06-2008
    XmakcX

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня нет ни оперы ни tasklist.exe (по-этому написал pslist)-поясни что это...в батниках не сильно((

    Код:
    @echo off  
    chcp 1251 >nul
    setlocal enabledelayedexpansion  
    start "" "%PROGRAMFILES%\Opera\opera.exe"  
    :loop  
    for /f "tokens=1-3" %%i in ('netstat -e ^| findstr /i "байт"') do (  
        echo out: %%j 1>1.txt  
        echo in : %%k 1>>1.txt  
        set /a ttl=%%j+%%k  
        echo total: !ttl! 1>>1.txt  
        ping -n 6 localhost 1>nul  
        pslist | findstr "opera" && goto:loop  
    )  
     

    Всего записей: 22 | Зарегистр. 01-06-2008 | Отправлено: 19:33 02-06-2008 | Исправлено: XmakcX, 19:33 02-06-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    XmakcX
    Строка:
    pslist | findstr "opera" && goto:loop
     
    У меня нет tasklist.exe (XP Home), a pslist.exe есть. Написал в качестве примера. Лучше так чем угадывать вывод команды. Попробуй заменить "pslist" на "tasklist"  
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:44 02-06-2008
    Laureus



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

    Цитата:
    Нельзя было называть батник ping.bat.

    Переименовал. Внешне ничего не изменилось: то же окно запуска и также в левом верхнем углу черного экрана мигает курсор. Как проверить , что батник работает правильно? Должноли появляться при запуске это окно и должно ли потом исчезать или сворачиваться. К-н внешние признаки работы батника есть?

    Всего записей: 177 | Зарегистр. 07-03-2008 | Отправлено: 19:46 02-06-2008 | Исправлено: Laureus, 19:48 02-06-2008
    XmakcX

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

    Цитата:
    tasklist

    оооо..теперь сработало у меня ХР-Ubuntu -спасибо за помощь.все кайф работает)))Жаль веб мани пиво не переводит))

    Всего записей: 22 | Зарегистр. 01-06-2008 | Отправлено: 19:53 02-06-2008
    Angel Hranite



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM спасибо!
    Elroir и Вам спасибо! только вот решил немного автоматизировать...

    Цитата:
    setlocal
    set prog=Patch
    set SANDBOX_DIR=%prog%"_SANDBOX_DIR"
    reg query "HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v %SANDBOX_DIR% 1>nul 2>&1
    if "%errorlevel%"=="0" goto cont
    call :create_vars %prog%".exe"
    reg add "HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v %SANDBOX_DIR% /d "%record%" /f 1>nul 2>&1
    :cont
    md "%folder%" 2>nul
    %prog%".exe"
    goto :EOF
     
    :create_vars
    set "record=%~dp1%~n1.%computername%"
    set "folder=%~n1.%computername%"

    программа запускается, переменная создается но немного неправильно

    Цитата:
    Patch_SANDBOX_DIR=C:\Documents and Settings\user\Рабочий стол\Patch.PC003 /f 1>nul 2>&1

    как это можно исправить?
     
    Добавлено:
    разобрался! спасибо еще раз!

    Всего записей: 51 | Зарегистр. 14-05-2008 | Отправлено: 20:49 02-06-2008
    Elroir



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

    Цитата:
    К-н внешние признаки работы батника есть?

    Нет - внешних признаков нет. Можешь убрать первую строчку (@echo off) и окончания строчек с ping-ами (>nul). Тогда будет видно, что происходит.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:58 02-06-2008
    tolyn77



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    привет, всем
    подскажите как в for перебрать диапазон?
    что то типа такого?
    FOR %%a IN ( 31 .. 220 ) DO ping -n 1 10.0.0.%%a
    заранее благодарен

    Всего записей: 1495 | Зарегистр. 07-09-2004 | Отправлено: 07:50 03-06-2008
    4aplin



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cyril Konst
    Вот теперь понятно. Спасибо тебе!!!

    Всего записей: 17 | Зарегистр. 29-05-2008 | Отправлено: 09:02 03-06-2008
    01MDM



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

    Код:
     
    for /l %%i in (31,1,220) do ping -n 1 10.0.0.%%i
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:02 03-06-2008
    4aplin



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!!! У меня проблема с написанием батника, выполняющего следующую задачу...
    Если процессы в системный лог пишут ошибку, тогда вызов blat, весится на команду eventtriggers и отправляет сообщение о том, какой сервис полетел...
    Подскажите, как его написать.

    Всего записей: 17 | Зарегистр. 29-05-2008 | Отправлено: 09:14 03-06-2008
    01MDM



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

    Цитата:
    А как получить имя принтера по умолчанию и передать его другой утилитке (setprinter.exe)?
    При этом батник нужно выполнять под юзером но с правами админа.

     
    На первую часть вопроса

    Код:
     
    @echo off
    for /f "tokens=2*" %%i in ('wmic printer where "default=true" get Name /value') do (
        set "name=%%i %%j"
    )
     
    setprinter.exe %name%
     

     
    Под юзером работать не будет, так что через runas или psexec

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:16 03-06-2008
    JohnRD

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

    Код:
    for %%F in (E:\install\GetMail\22\*.xml) do blat -of blat.ini -attach %%F

     
    Добавлено:
    еще одна благодарность за POSTIE  
    чем бы я не пробовал послать вложения, Outlook Express, MS Outlook, при чем с настройками по умолчанию.  

    Код:
    postie -host:mail.domain.ru -user:info@domain.ru -pass:212121 -extract -rm

     
    вытаскивает и все тут
    единственное ключей как у ракетной установки и комерческая.

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 09:36 03-06-2008 | Исправлено: JohnRD, 09:38 03-06-2008
    denixxbaykin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Существует папка Papka. Её месторасположение может быть любым в системе (на любом логическом диске, в любой папке). Это я к тому, что работа батника ведётся "из текущей папки". В ней находятся 2 вложенные папки. P1 и P2. Иерархия дальнейших вложений не важна (возможно, даже неизвестна). В P2 лежат папки/файлы, которые должны быть перемещены в P1 с соблюдением иерархии. Нужно переместить содержимое P2 в P1, но сделать это не копированием, а сразу перемещением. Как в проводнике "Вырезать" - "Вставить", чтобы не тратить место на диске. При этом, если будут встречены файлы с одинаковыми именами, перезаписать поверх.
    Я пробовал поколдовать с move...
    В общем, у меня получились только такие варианты:
    move /y .\P2\* .\P1 пишет синтаксис эррор )
    а если без звезды, то он тупо P2 внутрь P1 пихает...
    Короче, насколько я понял, тут нужно применить рекурсию, чтобы получить список файлов, потому что move работает таким образом только с файлами... вот тут и затык... Что-то не хватило мне мозга оформить её... ( Чувствую себя заварником...
    Хелп? Наверняка уже кто-то с этим сталкивался... Пробовал поиском поюзать, но понял, что я скорее сам допетрю до того, как это сделать, чем найду в 5 темах ответ...
    ---
    Ещё немного покемарив над этим, нашёл вот такую вот фичу:
    for /f %p in ('dir /a /b /s .\pp2\') do move /y %p .\pp1\
    Получаем список файлов... но это немного не то. Файлы перемещаются в pp1, прям в корень... так быть не должно. Получается, надо список, полученный при помощи dir ещё как-то обрезать, чтобы элементы в нём имели не абсолютный путь... ещё один затык...
    Можно попробовать отрезать через subst... привязать текущую папку к букве диска, и уже потом вырезая букву диска, получать относительный путь... в общем, я спать, а то уже утро... башка думать перестаёт.

    Всего записей: 36 | Зарегистр. 04-06-2008 | Отправлено: 05:09 04-06-2008 | Исправлено: denixxbaykin, 05:20 04-06-2008
    ildar1



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Посоветуйте плиз, как запустить БАТ файл в скрытом окошке? Старт дает максимум свернутое, CALL вообще не управляет окном, хотелось бы обойтись без доп.программ (Win2003).

    Всего записей: 271 | Зарегистр. 23-12-2005 | Отправлено: 09:24 04-06-2008
    utf

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Не подскажете, как можно проверить работает ли кто в расшаренной папке? Единственная мысля которая пришла на голову, проверять открыт ли на чтение/запись файл из этой расшаренной папки. Хотя как и это реализовать я тоже не знаю.

    Всего записей: 3 | Зарегистр. 03-03-2007 | Отправлено: 09:47 04-06-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru