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

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



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

    Цитата:
    подскажите как запустить одновременно
    ping gs.chel-net.ru > gs.chel-net.ru.txt  
    ping google.com > google.com.txt  
     

    У меня нормально отрабатывает такая конструкция:

    Код:
     
    start /b ping gs.chel-net.ru>gs.chel-net.ru.txt
    start /b ping google.com>google.com.txt
     

     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:17 26-10-2007
    BELOV



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

    Цитата:
    БАГ РЕПОРТ  

    офф топ. Пытаюсь прописать и удалить тему, тк иначе не получается, что-то заклинило...

    ----------
    Хромой путник обгонит быстрого скакуна,Если знает , куда идти...

    Всего записей: 372 | Зарегистр. 28-07-2004 | Отправлено: 17:47 26-10-2007
    AlessTO

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

    Код:
    set text=your.txt
    if exist tmp.tmp del /f /q tmp.tmp
    copy nul tmp.tmp>nul
     
    for /f "delims=" %%a in (%text%) do (
    findstr /c:"%%a" tmp.tmp>nul || echo %%a>> result.txt
    echo %%a>> tmp.tmp
    )
     
    for %%a in (tmp.tmp %text%) do del /f /q "%%a"
    ren result.txt "%text%"

    есть один минус: если в строке встречаются 2 (и более) кавычки подряд

    Код:
    например:
    "src=images/pass.gif"""
    .!""1416&/U9(&$з=)(""!.
    "p4djs.com"""

    батник стопорится (виснет). Как это обойти?
    зы. На этих строках

    Код:
    yil&-vRR"74n92#lHd|q4j°09v
    ?"+>??

    тоже завис.

    Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 14:13 27-10-2007 | Исправлено: AlessTO, 14:35 27-10-2007
    pgofman2

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    как из батника - сказать родному виндозному брендмауэру
    извне закрыть все порты и открыть только 80, 25, 110
    а из компа только на 80 к примеру
     
    спасибо заранее

    Всего записей: 66 | Зарегистр. 07-09-2006 | Отправлено: 16:45 27-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlessTO
    попробуй вместо echo юзать more
     
    Добавлено:
    pgofman2
    set portopening
          [ protocol = ] TCP|UDP|ALL
          [ port = ] 1-65535
          [ [ name = ] имя
            [ mode = ] ENABLE|DISABLE
            [ scope = ] ALL|SUBNET|CUSTOM
            [ addresses = ] адреса
            [ profile = ] CURRENT|DOMAIN|STANDARD|ALL
            [ interface = ] имя ]
     
      Задает конфигурацию порта брандмауэра.
     
      Параметры:
     
      protocol - Протокол порта.
           TCP - Протокол TCP(Transmission Control Protocol).
           UDP - Протокол UDP (User Datagram Protocol).
           ALL - Все протоколы.
     
      port - Номер порта.
     
      name - Имя порта (необязательно).
     
      mode - Режим порта (необязательно).
          ENABLE  - Пропускать через брандмауэр (по умолчанию).
          DISABLE - Не пропускать через брандмауэр.
     
      scope - Область порта (необязательно).
          ALL    - Пропускать через брандмауэр весь трафик (по умолчанию).
          SUBNET - Пропускать через брандмауэр только трафик локальной сети
                   (подсети).
          CUSTOM - Пропускать через брандмауэр только указанный трафик.
     
      addresses - Область действия адресов (необязательно).
     
      profile - Профиль конфигурации (необязательно).
          CURRENT  - Текущий профиль (по умолчанию).
          DOMAIN   - Профиль домена.
          STANDARD - Стандартный профиль.
          ALL      - Все профили.
     
      interface - Имя интерфейса (необязательно).
     
      Примечание: параметры "profile" и "interface" не могут быть указаны вместе.
                  Параметры "scope" и "interface" не могут быть указаны вместе.
                  Параметр "scope" должен иметь значение "CUSTOM", чтобы задать
                  адреса.
     
      Примеры:
     
          set portopening TCP 80 MyWebPort
          set portopening UDP 500 IKE ENABLE ALL
          set portopening ALL 53 DNS ENABLE CUSTOM
              157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,LocalSubnet
          set portopening protocol = TCP port = 80 name = MyWebPort
          set portopening protocol = UDP port = 500 name = IKE mode = ENABLE scope = ALL
          set portopening protocol = ALL port = 53 name = DNS mode = ENABLE
              scope = CUSTOM addresses =
              157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,LocalSubnet

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 17:30 27-10-2007
    AlessTO

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

    Цитата:
    AlessTO  
    попробуй вместо echo юзать more

    тоже самое..
    Вот список..

    Код:
    .!""1416&/U9(&$з=)(""!.
    yil&-vRR"74n92#lHd|q4j°09v
    "src=images/pass.gif"""
    "p4djs.com"""
    "mp3hat.com"""
    "MMporno..."""
    "mafiascripts.com"""
    "soul1/2006"""
    "hor..."""
    "antidot.ws"""
    "ccpowerforums.com"""
    ?"+>??
    7S,)6"_x?da%kA
    2?&%B5ChQJgQup?RhB0?7iQiU9U?"3q0,3HdvO
    "ujgiugfuw)????^
    !nomaczSrFyNN54Q1!|"(9
    !D%Kg6O-xa"??sey%?CJJZghbmPCyEaTW1UJLs
    d6S"uL0;s=
    "0002
    1,jrn"),

    такая засада, когда ~3000000 строк и на 2500000 (10 часов) приходится по новой...

    Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 18:13 27-10-2007 | Исправлено: AlessTO, 04:41 28-10-2007
    pgofman2

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

    Всего записей: 66 | Зарегистр. 07-09-2006 | Отправлено: 22:12 27-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    pgofman2
    забыл сказать что справка контекста команды netsh
    вот пример открытия 80 порта для брандмауэра по протоколу tcp

    Код:
    netsh set portopening tcp 80 MyLocalhost

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 01:27 28-10-2007
    nidvoxx

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    спасибо, то что надо  
     
    Elroir
    так тоже работает, я пробовал показадось, что по очереди пингуют, ошибся )

    Всего записей: 280 | Зарегистр. 19-08-2003 | Отправлено: 09:44 28-10-2007
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:54 28-10-2007 | Исправлено: 01MDM, 12:23 28-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlessTO
    объясни подробнее свою задачу, по твоему коду и описанию мало что понятно
    так вероятность того, что форумчане тебе помогут возрастёт
    работаешь с базами sql?
    размер файла, его кодировка?
    хочешь удалить повторяемые строки в любом месте файла или только парные
    (следующие друг за другом)?
    в твоих примерах не найдено ни одной повторяемой строки
    к некоторым спецсимволам, содержащимся в приведенным тобой файле, интерпретатор не совсем равнодушен, поэтому все таки лучше юзать утилиты, скрипты и спец софт
    да и скорость обработки при этом возрастёт в разы

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 17:29 28-10-2007
    AlessTO

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    В этом примере я привел код обработчика строк (строки могут идти как повторяющимися так и нет).
    Ситуация следующая есть текстовые файлы/ANSI - 1251/ (*.dic) /не бинарники/ размером ~30 Mb и количеством строк от 2000000. Файлы образованы путем соединения более мелких (того же формата). Необходимо проверить их на предмет повторяемости строк и оставить только уникальные (неважно как они расположены). В этом посте я указал строки на которых обработчик просто останавливается (такое ощущение что он входит в бесконечный цикл).
    Насчет спецсофта - в курсе. Есть тулза Clear Text (сравнение по хешу) - её скорость оставляет желать лучшего (хотя надо признать - ошибок не выдала).
    Теперь насчет спецсимволов..
    Сделайте простой txt с таким содержанием

    Код:
    "1+t
    "1+t

    и батник его не обработает
    Где ж тут спецсимволы? Кавычки? Тогда почему с этим

    Код:
    "guest)""Н."

    всё нормально?

    Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 01:09 29-10-2007 | Исправлено: AlessTO, 01:12 29-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlessTO
    your.js
    Код:
    fs=new ActiveXObject("Scripting.FilesystemObject")
    d=new ActiveXObject("Scripting.Dictionary")
    fname=("your.txt")
    txt=fs.OpenTextFile(fname,1).ReadAll().split("\r\n")
    for(i in txt)
    d.Item(txt[i])=1
    fs.OpenTextFile(fname,2,1).Write(d.Keys().toArray().join("\r\n"))

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 04:50 29-10-2007 | Исправлено: Nagual, 09:33 29-10-2007
    AlessTO

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Спасибо!!
    Все работает. Только последнюю строчку не проверяет. Я думаю - не принципиально..

    Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 06:46 29-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlessTO
    исправлено, сколько времени уходит на обработку теперь?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 09:21 29-10-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlessTO
    http://users.mark-itt.ru/zoom/du/index.htm
    Возможно то, что надо.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 09:25 29-10-2007
    Maza Faka



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

    Цитата:
    по удалению дубликатов строк

    Решение при помощи AutoIt устроит? За подробностями в личку.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:11 29-10-2007
    AlessTO

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Зер гуд!
    Скорость проверяется.. (P4, HT, 3,2 Ghz, RAM 2 Gb)
    Отслеживать приходится по загрузке проца. В смысле, что - иначе не определить окончание обработки. Насколько я знаю, при помощи vbs можно создать в конце скрипта окошко с кнопкой "OK" На js это возможно?
     
    Добавлено:
    king_stiven
    Это наверное удобно, но есть ньюанс - тулза при сортировке или удалении дубликатов посчитает равными и sdflkjlmxcvlk и sDflkjlmxcvlk и sdflkjlmxcvlK.
     
    Добавлено:
    Итог - 1 час 28 мин. и окошко

    правда процесс еще висит, ног судя по загрузке проца - в холостую.

    Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 13:15 29-10-2007
    MorisA



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как при помощи команды узнать сведения о железе компьютера?
    Интересует команда с помощью которой можно будет узнать сведения о железе удаленного компа, с программами работать неохота ибо работа разовая и ставить из-за этого программу нет желания.

    Всего записей: 33 | Зарегистр. 04-12-2006 | Отправлено: 16:08 29-10-2007
    Nagual



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

    Код:
    WScript.Echo ("Готово")

     
    MorisA
    systeminfo

    Код:
    dxdiag/?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 16:43 29-10-2007
       

    Страницы: 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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru