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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Утилтиа-модуль (VBS-скрипт) для Internet Explorer - Позволяет копировать выделенный текст без пробелов на конце. Особенно полезно тут на руборде
     
    Copy_From_Ru-Board_Installer_to_IE.vbs
     
    - Работает из контекстного меню IE («Копировать с Ru-Board»).
     
     
    Известные глюки/недостатки:
     
    * Когда копируем, текущее окно IE теряет фокус. Возможно мой локальный глюк. Будем считать фичей - Копируем текст, и окно автоматический сворачивается, чтобы вставить скопированное в другое место (в созданный батник к примеру).
    * Копирование ограничено Plain Text. Т.е форматирование не сохраняется.
     
     
     
    P.S
    Если кому интересно, могу и для Opera сделать

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 08:24 23-02-2008 | Исправлено: ViSiToR, 13:43 23-02-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Хорошо, только в последней строчки пробел остаётся.

    Всего записей: 2182 | Зарегистр. 17-07-2006 | Отправлено: 10:50 23-02-2008
    ViSiToR



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

    Цитата:
    в последней строчки пробел остаётся.

    Поправил. Также теперь если вызывать контекстное меню над ссылкой/картинкой (под выделенным текстом), пункт «Копировать с Ru-Board» будет доступен.
     
    Добавлено:
    Забыл спросить, "эффект" сворачивания окна IE при копировании присутствует?

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 11:09 23-02-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    "Эффект" сворачивания окна IE при копировании то присутствует, то нет.

    Всего записей: 2182 | Зарегистр. 17-07-2006 | Отправлено: 11:56 23-02-2008
    ViSiToR



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

    Цитата:
    то присутствует, то нет.

    Он присутствует если вызывать меню на "чистом" тексте.
    Позже попробую поискать решение глубже.
     
    Добавлено:
    В общем не удаётся поправить, будем считать фичей - Копируем текст, и окно автоматический сворачивается, чтобы вставить скопированное в другое место (в созданный батник к примеру).
     
    Обновил vbs-ку (3 kb), убрал кучу лишнего и исправил пару ошибок. Добавил в шапку, думаю там пригодится тоже

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 12:14 23-02-2008
    Kosmos_9ball_crash



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем! во первых всех с праздником! а теперь вопрос:написал bat-ник,но т.к я не спец в этом то прошу вашего совета!как сделать чтобы все операции он выполнял в фоне если можно(удаление,копирование) т.е не озвучивал каждое действие в окне! а самый идеальный вариант(если есть возможность конечно)Все дейсвия в фоне а на экране надпись,ну допустим "идёт настройка системы,подождите 2 минуты" и в итоге помещается в "автозагрузку" и выполняется при каждой загрузке!Заранее спасибо за ответ!

    Всего записей: 38 | Зарегистр. 27-08-2007 | Отправлено: 23:07 23-02-2008
    king_stiven

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

    Код:
    @echo off
    echo идёт настройка системы,подождите 2 минуты


    Всего записей: 2182 | Зарегистр. 17-07-2006 | Отправлено: 03:39 24-02-2008
    Kosmos_9ball_crash



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Спасибо за совет только он не прокатывает!  
     
    @echo off  
    echo pleace 5 minutes
    del /f /s /q "E:\soft\inet\#torrents#\BackUp_22.02.2008"
    rd /s /q "E:\soft\utilites\copy"
     
    Вот собственно сам БаТ!посмотри что получается! он пишет "pleace 5 minutes" в начале и дальше список удалений! а мне надо чтобы их небыло видно! просто надпись на экране "pleace 5 minutes..."

    Всего записей: 38 | Зарегистр. 27-08-2007 | Отправлено: 10:29 24-02-2008
    01MDM



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

    Код:
     
    del /f /s /q "E:\soft\inet\#torrents#\BackUp_22.02.2008" 1>nul 2>&1
    rd /s /q "E:\soft\utilites\copy" 1>nul 2>&1
     

     
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:02 24-02-2008
    mr1



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста создать батник который:
    1.    менял права доступа для файла/директории для группы users – полный
    2.    запускался <батник>  файл/директория

    Всего записей: 37 | Зарегистр. 03-01-2006 | Отправлено: 12:50 24-02-2008
    faithful



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
     
    Никогда не думал что придется писать батники. Чего-то было к ним неоправдано пренебрежительное отношение. Короче пришлось. :)
     
    Задача следующая:
    Настроить кеширующий ДНС для перенаправления запросов на соответствующие нэйм-сервера встречающихся почтовых доменов. (ДНС локальный для почтового сервера)
     
    Решение:
    Используя LogParser собираем из лог-файлов почтового сервера имена используемых почтовых доменов:

    Код:
    >logparser -file:query.sql -i:TEXTLINE -o:NAT -rtp:-1

     
    query.sql:
    Код:
    select  DISTINCT postsystem
    USING SUBSTR(TO_LOWERCASE(Text),ADD(INDEX_OF(Text, '@'),1),SUB(SUB(INDEX_OF(Text,'>'),1),INDEX_OF(Text,'@'))) as postsystem
    into postsystems.log
    from '\MDaemon\logs\*SMTP*.log'
    where ((TEXT LIKE '%rcpt to:%@%') or (TEXT LIKE '%mail from:%@%'))
    order by postsystem Asc

     
    после чего перебираем файл postsystems.log, определяем NS, их IP и настраиваем DNS:

    Код:
    001 @echo off
    002 setlocal ENABLEDELAYEDEXPANSION
    003 set path=%path%;C:\Program Files (x86)\Support Tools
    004 for /F %%d in (postsystems.log) do call :dns_create %%d
    005 endlocal
    006 goto :EOF
    007  
    008 :dns_create  
    009 set pip=
    010 set inet=
    011 rem если зона с таким именем уже существует то выход
    012 for /f "tokens=1" %%z in ('dnscmd . /EnumZones /Forwarder ^| findstr /r "^[^.]%1"') do goto :EOF
    013 for /f "tokens=1,2 delims==" %%n in ('nslookup -type^=SOA %1') do call :separate %%n %%o
    014 dnscmd . /ZoneAdd %1. /Forwarder %pip% /Slave
    015 goto :EOF
    016  
    017 rem Non-authoritative answer:
    018 rem yandex.ru
    019 rem         primary name server = ns1.yandex.ru
    020 rem         responsible mail addr = sysadmin.yandex-team.ru
    021 rem         serial  = 2008022206
    022 rem         refresh = 1800 (30 mins)
    023 rem         retry   = 900 (15 mins)
    024 rem         expire  = 2592000 (30 days)
    025 rem         default TTL = 900 (15 mins)
    026 rem  
    027 rem yandex.ru       nameserver = ns5.yandex.ru
    028 rem yandex.ru       nameserver = ns1.yandex.ru
    029 rem yandex.ru       nameserver = ns2.yandex.ru
    030 rem yandex.ru       nameserver = ns4.yandex.ru
    031 rem ns1.yandex.ru   internet address = 213.180.193.1
    032 rem ns2.yandex.ru   internet address = 213.180.199.34
    033 rem ns4.yandex.ru   internet address = 213.180.202.100
    034 rem ns5.yandex.ru   internet address = 213.180.204.1
    035 :separate
    036 IF "%1"=="primary" call :resolve_DNS %4
    037 IF "%2"=="nameserver" call :resolve_DNS %3.
    038 IF "%2"=="internet" set pip=%pip% %4
    039 goto :EOF
    040  
    041 :resolve_DNS
    042 nslookup %1 >~resolve.dns
    043 for /f %%e in ('find /c "Address:" ^<~resolve.dns') do set err=%%e
    044 if %err% LSS 2 goto :EOF
    045 for /f "tokens=2 delims= " %%i in ('find "Address:" ^<~resolve.dns') do (
    046     set inet=%%i
    047     rem Дублирование исключить
    048     for /f %%a in ('echo %pip% ^| find "%%i"') do (
    049         set inet=
    050     )
    051 )
    052 if DEFINED pip (if DEFINED inet set pip=%pip% %inet%) ELSE (if DEFINED inet set pip=%inet%)
    053 goto :EOF

     
    Вся эта байда отработала, зоны добавила. Вопрос в другом. Возможно ли это творение облагородить?
    Например мне не нравится строка 043.  
    find /c "Address:" <~resolve.dns - выдает результат на консоль, а вот как этот результат засунуть в переменную без использования цикла?!
    ИЛИ может есть более красивый и правильный способ обработки ошибок?!

    Всего записей: 240 | Зарегистр. 09-09-2005 | Отправлено: 10:55 25-02-2008 | Исправлено: faithful, 10:56 25-02-2008
    01MDM



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

    Цитата:
    а вот как этот результат засунуть в переменную без использования цикла?!  

    Это cmd, а не bash

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:37 25-02-2008
    Maza Faka



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

    Код:
     
    @echo off
    cacls test.txt /E /G users:F
     

     
    2.
    Файлы зарегестрированные в системе можно запускать просто указав полный путь к файлу, по поводу остального смотри описание синтаксиса команды Start

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:46 25-02-2008 | Исправлено: Maza Faka, 11:48 25-02-2008
    mr1



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

    Всего записей: 37 | Зарегистр. 03-01-2006 | Отправлено: 13:13 25-02-2008
    escander1984

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! Помогите создать батник который юудет копировать файл по разным папкам в зависимости от дня недели. Например в понедельник в папку "1", во вторник - "2" и т.д.

    Всего записей: 5 | Зарегистр. 25-10-2007 | Отправлено: 07:16 26-02-2008
    RomanF



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Думаю не только мне будет интересен этот скрипт, но многим другим, кто подключён в большим локальным сетям, у котрых часто меняются IP адреса локальных серверов.
     
    Задача 1: требуется на BAT определить ip адреса перечисленных доменов (например, corbina.ru, stat.corbina.ru, corbina.tv) и с опеределённым IP адресом добавить его с роут.
     
    добавить в роут не составит труда
    Код:
    route -p add 89.179.135.67 MASK 255.255.255.67 10.1.0.17

     
    Нашёл скромную строчку, как определить свой ip адрес
    Код:
    FOR /F "tokens=1,2* delims=:" %a in ('ipconfig^|FIND "IP-"') do @ECHO %b

     
    Думаю самый короткий способ вытащить ip это по команде ping -n 1 corbina.ru
    Но как это реализовать, не получается.
     
    Задача 2: Возможно ли средствами BAT создать RAS подключение (VPN звонок)?

    Всего записей: 67 | Зарегистр. 13-07-2007 | Отправлено: 09:44 26-02-2008
    01MDM



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

    Код:
     
    @echo off
    for /f "tokens=2 delims=[]" %%i in ('ping -n 1 corbina.ru ^| findstr "["') do set ip=%%i
    echo %ip%
     

     
    Добавлено:

    Цитата:
    Задача 2: Возможно ли средствами BAT создать RAS подключение (VPN звонок)?

     
    rasdial /?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:40 26-02-2008
    Artyom9191

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
    У меня такая проблема:
    хочу создать батник, который копирует файл в автозагрузку, но не получаутся. Но на диск C: копирует без проблем, а путь к автозагрузке не находит. Не знаю что делать...

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artyom9191
    В автозагрузку? Объясни.

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    хочу скопировать файл C:\a.exe в C:\Documents and Settings\All Users\Start Menu\Programs\Startup

    Всего записей: 3 | Зарегистр. 26-02-2008 | Отправлено: 18:56 26-02-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 100 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru

    Рейтинг.ru