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

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



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Antdik
    Считаю что краткий формат даты на компе ДД.ММ.ГГГГ

    Код:
    @Echo Off
    Set Folder=E:\Report\%Date:.=_%
    Copy %Folder%\*.* \\BigBoss\Report\
     

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:03 07-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HELP!!!
    Помогите плиз!
    Как можно средствами батника добавлять значения в тело HTML документа из текстового редактора.Пробывал это сделать следующим способом:

    Код:
    setlocal  
    chcp 1251 1>nul  
     
    for /f "tokens=2 delims=>" %%i in ('type 1.html ^| findstr /I "ID=1.1"') do set "field_2=%%i"  
    for /f "tokens=2 delims=>" %%i in ('type 1.txt ^| findstr /I "ID=1.1."') do set "field_3=%%i"  
    gsar -s"<TD ID=1.1>%field_2%" -r"<TD ID=1.1>%field_3%" -o 1.html  
    pause
     

    Но при увеличении массива сталкнулся с проблемой, батник ищет последний ID допустим в поиске адан ID=1.1 он ищет последний содержащий эту строку и находит допустим ID=1.100.
    Помогите плиз!Как можно решить эту проблему?
    У gsar а нет таких ключей которые бы искали строго заданный текст.
    Может что предложите.
    Нужно чтобы секретарша заполняла тоько текстовый файл с ID допустим  
    <ID=1>Иванов Петров Сидоров
    <ID=2>Сидоров Иванов Петров
    <ID=3>Сорокин Петр Михалыч
    ...
    <ID=1000>Михалыч Сорокин Петрович
    И т.д.
    Чтобы потом при запуске батника эти строки искали в (допустим 1.html)странице  
    закомментированную строку с таблице допустим  
    <!---<TD ID=1.1>906</TD>--->
    Затем избовляла строку от комментария и добавляла в нее все IDs которые еще не существуют на странице.
    При этом можно чтобы батник сверял IDs не на странице допустем а в друггм текстовом файле, в который помещаются уже существующие на странице ID.
    Заранее спасибо.
    Ой..наболтал наболтал.

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 10:06 07-10-2008
    Antdik



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Solenaja
    Это не резервное копирование. У шефа стоит программа позволяющая просматривать и работать с отчетами. А что за серверная утилита?

    Всего записей: 96 | Зарегистр. 11-01-2006 | Отправлено: 10:07 07-10-2008
    king_stiven

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

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


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:08 07-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Или чтобы он Брал  
    <!---<TD ID=1.1>906</TD>--->
    допустим из другого тектового файла и вставлял в тело таблицы

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 10:10 07-10-2008
    Solenaja



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Antdik
    на пред странице линк на резевирование
    а утилита эта NTBackup, которая в принципе и в XP тоже работает

    ----------
    Могу помочь, но только своими знаниями и ...

    Всего записей: 4246 | Зарегистр. 02-09-2001 | Отправлено: 10:11 07-10-2008
    tigran_astranet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую всех!
     
    У меня следующая проблемка:
     
    При выполнении команды "rman target /" я получаю 2 оракловских файла 01JSFLP4_1_1 и 02JSFLP4_1_1 и затем их копирую в свою папку. например, c:\Backup\oracle_last_transaktion,  
     
    вот как это выглядит:
     
    chdir /d c:
    mkdir c:\Backup\oracle_last_transaktion\
    rman target / < commands.txt
    xcopy "C:\oracle\ora92\database\" "\Backup\oracle_last_transaktion\" /s /Y /e
     
    но запустив этот скрипт через несколько дней я получу файлы 03JSFLP4_1_1 и 04JSFLP4_1_1, но уже с другой датой. Как мне скопировать только эти файлы: 03JSFLP4_1_1 и 04JSFLP4_1_1, ведь в оракловской папке лежит:
    01JSFLP4_1_1;
    02JSFLP4_1_1;
    03JSFLP4_1_1;
    04JSFLP4_1_1;
     
    То есть я хочу копировать только файлы с текущей датой создания. Пробовал через xcopy указывал ключ /d, но это не помогло. Подскажите, пожалуйста, как это можно сделать.

    Всего записей: 9 | Зарегистр. 12-09-2008 | Отправлено: 10:12 07-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tigran_astranet
    При использовании команды xcopy с ключом /D
     будут переписаны файлы а не скопированы, поэтому тебе и не помогло.
    А тебе надо чтоб имена файлов остались теже?
     

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 10:22 07-10-2008
    Solenaja



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    точно - склероз! без пробелов работает. спасибо.
    есть только мелкая поправка, но это бок с моей стороны:
    если группа называется 09-1-3-04
    а входящие в неё  
    09-1-3-4-01
    09-1-3-4-02
    09-1-3-4-03
     
    создается папка 09-1-3-4 и в неё кидается
    09-1-3-4-01
    09-1-3-4-02
    09-1-3-4-03
    что есть правильно
    а 09-1-3-04 остается в корне просто висеть
    в принципе это даже и лучше тк видно, где неправильная сортировка
     
    Подробнее...

    ----------
    Могу помочь, но только своими знаниями и ...

    Всего записей: 4246 | Зарегистр. 02-09-2001 | Отправлено: 10:30 07-10-2008
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Задача уже обсуждалась, но возникла необходимость немного модифицировать бантник.
    Повторю задачу.
    в файлах необходимо было поменять местами определенное значение.
    содержимое файла:
    06.09.2008;00:12:37;000001;xxxxxxxx;;yyyyyy/yyyyyyyyy;;xxxx;;;xxx;xxxx
    06.09.2008;02:40:01;000002;xxxxxxxx;;yyyyyy/yyyyyyyyy;;xxxx;;;xxx;xxxx
    выходной файл:
    06.09.2008;00:12:37;000001;xxxxxxxx;;;;xxxx;;yyyyyy/yyyyyyyyy;xxx;xxxx
    06.09.2008;02:40:01;000002;xxxxxxxx;;;;xxxx;;yyyyyy/yyyyyyyyy;xxx;xxxx
    Вот такое решение получилось(файл не один)

    Цитата:
    @echo off  
    setlocal enabledelayedexpansion
    for %%i in (*.txt) do (
    set /p firstline=<%%i
    echo !firstline!>> 1.tmp
    for /f "skip=1 tokens=1-8 delims=;" %%a in (%%i) do (
        echo %%a;%%b;%%c;%%d;;;;%%f;;%%e;%%g;%%h>> 1.tmp
    )
    move /y 1.tmp %%i
    )

    Усложнение заключается в том, что появились строки такого типа:
    06.09.2008;03:36:08;000004;;xxxxxxxxxxxxxxxxxxx;yyyyyy/yyyyyyyyy;;xxxx;;;xxx;xxxx
    т.е. изменилось количество ; в некоторых местах строки
    Задача такая же и осталась:перенести yyyyyy/yyyyyyyyy,просто при переносе необходимо сохранить первоначальное положение ;во всех строках.

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 11:32 07-10-2008
    Antdik



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




    для спасибов есть ПМ

    Всего записей: 96 | Зарегистр. 11-01-2006 | Отправлено: 11:48 07-10-2008 | Исправлено: vu1tur, 12:27 07-10-2008
    tigran_astranet

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

    Цитата:
    При использовании команды xcopy с ключом /D
     будут переписаны файлы а не скопированы, поэтому тебе и не помогло.
    А тебе надо чтоб имена файлов остались теже?  

     
    Это не критично, имена файлов можно менять.

    Всего записей: 9 | Зарегистр. 12-09-2008 | Отправлено: 13:04 07-10-2008
    sevasmr1986

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!  
     
    Подскажите пожалуйста как можно решить следующую задачу средствами *.bat/*.cmd в WinXP:  
     
    Имеется локальная сеть (192.168.4.xxx/255.255.255.0)  
     
    Собственно вопрос:  
    Требуется, чтобы одна машина постоянно пинговала другую машину по заданному адресу (например 192.168.4.2) и если пинг перестал проходить, то выполняется одна ветка дествий, а если пинга не было а потом появился, то выполняется другая ветка действий

    Всего записей: 3 | Зарегистр. 07-10-2008 | Отправлено: 13:16 07-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tigran_astranet
    Посмотри вот тут, там как раз есть то что те надо:
    кликни
     
     
     
    Добавлено:
    Люди!Может кто поможет, как спомощью батника заблокировать неиспоьзуемые порты,ВСЕ!
    Или может проще разрешить доступ тоько определенным?То тоже как?
    Спасибо.

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 13:39 07-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dimpase
    если речь идёт о встроенном брандмауэре, то
    для этого надо как-то составить список портов, а потом можно уже разобраться с
    netsh firewall /? и выполнить их настройку
    как вариант, бранд настраивается через GUI, после чего создаётся дамп настроек для последующего импорта, enjoy
     
     
    Добавлено:
    sevasmr1986
    Код:
    (ping 192.168.4.2&&echo aga)||echo nea

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 14:37 07-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    еще вопросец, как спомощью батника подключить сетевой диск на удаленной машине?Я где то на форуме это видел, но найти второй раз не смог.
    Заранее спасибо.

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 15:12 07-10-2008
    sevasmr1986

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Не понятен синтаксис. Это ведь должен быть цикл(бесконечный), с постоянным опросом (пингом) машины.
    Тут на форуме уже был вопрос:
    Как научить шлюзовую машину самостоятельно выключаться после того как последний пользователь выключил свой компьютер.
    На что ему прислали Код:
     
     
    Нужно что-то подобное, только опрос ведется по одному адресу, но 24/7

    Всего записей: 3 | Зарегистр. 07-10-2008 | Отправлено: 15:48 07-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sevasmr1986
    Сорри что вмешиваюсь, а вы смотрели с 31-32 стр???Гляньте там что то вроде видел такое.

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 16:01 07-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sevasmr1986
    берешь утилиту sleep и ставишь паузу куда надо, хоть первой, хоть второй строкой
    а-ля
     
    :st
    приведенный выше код
    sleep число_секунд
    goto:st
     
     
    или примерно так:
     
    :st
    sleep n
    (ping 192.168.4.2&&goto:aga)||goto:nea
     
    rem "одна ветка дейсвий"
    :aga
    команды
    ...
    goto:st
     
    rem "другая ветка действий"
    :nea
    команды
    ...
    goto:st

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 16:10 07-10-2008 | Исправлено: Nagual, 16:20 07-10-2008
    sevasmr1986

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Что есть пинг, что нету, обработка всегда переходит в ветку :aga
     
    Пробывал еще так:

    Код:
    :START
    ping 192.168.4.2
    IF %ERRORLEVEL%==0 GOTO :GOOD
     
    GOTO :ERROR
     
    rem "одна ветка дейсвий"
    :GOOD
    команды 1
    ...
     
    rem "другая ветка действий"
    :ERROR
    команды 2
    ...
     
    GOTO :START

     
    Параметр %ERRORLEVEL% тоже всегда возвращает 0, независимо, есть пинг или нету

    Всего записей: 3 | Зарегистр. 07-10-2008 | Отправлено: 17:00 07-10-2008 | Исправлено: sevasmr1986, 17:01 07-10-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru