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

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



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

    Код:
     
    @echo off
    set count=0
    :next1
    set /a count+=1
    for /f "tokens=%count% delims=H" %%i in ('type test.txt') do (
        if "%%i"=="ALT" goto:eof
        call:parse "%%i"
        goto:next1
    )
    goto:eof
    :parse
    set count1=0
    :next2
    set /a count1+=1
    for /f "tokens=%count1%" %%i in ('echo %1') do (
        goto:next2
    )
    set /a tok4=count1-5
    set /a tok3=count1-4
    for /f "tokens=%tok4%,%tok3%" %%i in ('echo %1') do (
        echo %%i,%%j
    )
     

     
    test.txt содержит строку:
     
     11 22 33 44 555 66 77 HALT 11 22 3333 44 555 HALT 11 22 33 44 5 6666 77 88 HALT

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:20 08-11-2007 | Исправлено: 01MDM, 11:21 08-11-2007
    king_stiven

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

    Код:
    setlocal enabledelayedexpansion
    set "n=0"
    for /f "tokens=*" %%A in (2.txt) do call :roc %%A
    goto :eof
    :roc
    if not "%1"=="" (
        set /a n+=1
        set T!n!=%1
        set /a i1=!n!-3
        set /a i2=!n!-2
        if "%1"=="HALT" (
           echo !T%i1%!,!T%i2%! >> out_file.txt
           set "n=0"
        )
    shift
    goto :roc
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:26 08-11-2007 | Исправлено: king_stiven, 12:26 08-11-2007
    pgofman2

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    test.txt содержит строку:  
     
     11 22 33 44 555 66 77 HALT 11 22 3333 44 555 HALT 11 22 33 44 5 6666 77 88 HALT
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     
    ФАЙЛ МНОГОСТРОЧНЫЙ?

    Всего записей: 66 | Зарегистр. 07-09-2006 | Отправлено: 15:18 08-11-2007 | Исправлено: pgofman2, 15:19 08-11-2007
    aficio

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые коллеги! Нужна помощь!
    Нашел на просторах инета 2 скрипта для работы с alert.log в Oracle.
     
    1 скрипт) ждет появления в алерт логе события с кодом ORA- и шлет админу это сообщение об этой ошибке
     
    2скрипт) переименовует файл  
     
    Хотелось бы чтобы этот переименованный файл добавлялся в конец файла к примеру all.log (т.е файл который бы содержал все события с начала установки Oracle)  !!!!!!!
     
    Вот скрипты:
     
    ora-alerts.cmd:
    set workdir=c:\oracle\admin\orcl\bdump
    pushd %workdir%
    find "ORA-" ORCLALRT.LOG > c:\dbwork\alerts.txt
    if errorlevel 1 goto END
    blat c:\dbwork\alerts.txt -t Jeff.Eberhard@xxxxxxxxx -s "Oracle WINSPC
    Alert"
    call c:\dbwork\datetype.bat orclalrt.log
    :END
    popd
     
    datetype.bat:
    @Echo OFF
    TITLE DateName
    REM DateName.CMD
    REM takes a filename as %1 and renames as %1_YYMMDDHHMM
    REM
    REM -------------------------------------------------------------
    IF %1.==. GoTo USAGE
    Set CURRDATE=%TEMP%\CURRDATE.TMP
    Set CURRTIME=%TEMP%\CURRTIME.TMP
     
    DATE /T > %CURRDATE%
    TIME /T > %CURRTIME%
     
    Set PARSEARG="eol=; tokens=1,2,3,4* delims=/, "
    For /F %PARSEARG% %%i in (%CURRDATE%) Do SET YYYYMMDD=%%l%%k%%j
     
    Set PARSEARG="eol=; tokens=1,2,3* delims=:, "
    For /F %PARSEARG% %%i in (%CURRTIME%) Do Set HHMM=%%i%%j%%k
     
    Echo RENAME %1 %1_%YYYYMMDD%%HHMM%
    RENAME %1 %1_%YYYYMMDD%%HHMM%
    GoTo END
     
    :USAGE
    Echo Usage: DateName filename
    Echo Renames filename to filename_YYYYMMDDHHMM
    GoTo END
     
    :END
    REM
    TITLE Command Prompt

    Всего записей: 8 | Зарегистр. 29-06-2005 | Отправлено: 16:18 08-11-2007
    Tipulatoid



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

    Цитата:
    Хотелось бы чтобы этот переименованный файл добавлялся в конец файла к примеру all.log

    datetype.bat

    Код:
    @Echo OFF  
    TITLE DateName  
    REM DateName.CMD  
    REM takes a filename as %1 and renames as %1_YYMMDDHHMM  
    REM  
    REM -------------------------------------------------------------  
    IF %1.==. GoTo USAGE  
    Set CURRDATE=%TEMP%\CURRDATE.TMP  
    Set CURRTIME=%TEMP%\CURRTIME.TMP  
     
    DATE /T > %CURRDATE%  
    TIME /T > %CURRTIME%  
     
    Set PARSEARG="eol=; tokens=1,2,3,4* delims=/, "  
    For /F %PARSEARG% %%i in (%CURRDATE%) Do SET YYYYMMDD=%%l%%k%%j  
     
    Set PARSEARG="eol=; tokens=1,2,3* delims=:, "  
    For /F %PARSEARG% %%i in (%CURRTIME%) Do Set HHMM=%%i%%j%%k  
     
    Echo RENAME %1 %1_%YYYYMMDD%%HHMM%  
    RENAME %1 %1_%YYYYMMDD%%HHMM%
    type %1_%YYYYMMDD%%HHMM%>> all.log
    GoTo END  
     
    :USAGE  
    Echo Usage: DateName filename  
    Echo Renames filename to filename_YYYYMMDDHHMM  
    GoTo END  
     
    :END  
    REM  
    TITLE Command Prompt

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 17:06 08-11-2007 | Исправлено: Tipulatoid, 17:11 08-11-2007
    aficio

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

    Всего записей: 8 | Зарегистр. 29-06-2005 | Отправлено: 17:19 08-11-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    aficio
     
    copy /b all.log + %1_%YYYYMMDD%%HHMM%

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:23 08-11-2007 | Исправлено: king_stiven, 17:29 08-11-2007
    01MDM



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

    Цитата:
    ФАЙЛ МНОГОСТРОЧНЫЙ?

    нет

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:33 08-11-2007
    Ilyansk

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Уважаемые king_stiven (!? ), 01MDM, pgofman, Maza Faka
    спасибо за внимание к нуждам страждущих. А как 01MDM догадался, что файл однострочный?  Кстати, а есть ограничение на длину обрабатываемой FOR /F строки?
     
    Задачу можно считать решенной, тем более, при таком количестве вариантов. Не без помощи этой ветки форума "окунулся" в ВАТ мир... Че у меня теперь только не делается с их помощью, и по ночам... еще планировщик помогает дюже, и фар и плагин s&r для него - ващще незаменимая вещь и ... но это уже для других "веток"
    Еще раз всем спасибо      ^_^

    Всего записей: 70 | Зарегистр. 27-07-2006 | Отправлено: 07:22 09-11-2007
    Lutvun



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Парни, помогайте: нужно чтоб по батнику файл типа xxxx.log перейменовывалса в файл типа "Текущая дата".log.
    Посути вопрос как узнать текущюю дату.

    Всего записей: 286 | Зарегистр. 22-11-2005 | Отправлено: 21:27 09-11-2007
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 21:53 09-11-2007
    Lutvun



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Спасибо! А может есть такаяже только чтоб от системных настроек не зависела?

    Всего записей: 286 | Зарегистр. 22-11-2005 | Отправлено: 23:47 09-11-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Lutvun
    а чем системная не устраивает?
     
     
    Добавлено:
    небось хочешь не 09.11.2007 а 2007.11.09 ?
     
     
    @echo off
    for /f "delims=. tokens=1,2,3" %%e in ("%date%") do (
        md %%g.%%f.%%e
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:55 09-11-2007
    Lutvun



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну так она зависит от настроек и если в системе разделителём служыт не точька а слеш ничиво не получитса поскольку имени типа 09/11/2007 создать не получитса.

    Всего записей: 286 | Зарегистр. 22-11-2005 | Отправлено: 00:08 10-11-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Lutvun
    где то было решение, возможно в шапке

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 00:18 10-11-2007
    Smitis



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Lutvun
    В 4-х частях темы уже хрен знает сколько раз разбирали.
    Честно говоря, этот вопрос уже всех, по-моему, достал

    ----------
    Разум когда-нибудь победит

    Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 01:07 10-11-2007
    Maza Faka



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

    Код:
     
    @echo off
    for /f "skip=2 tokens=3" %%a in (
      'reg query "HKCU\Control Panel\International" /v sDate') do set sep=%%a
     
    for /f "delims=%sep% tokens=1-3" %%a in ("%date%") do echo %%a-%%b-%%c
     

     
    Smitis

    Цитата:
    этот вопрос уже всех, по-моему, достал

    Видно меня ещё не достал

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Lutvun
    А что мешает использовать %date:/=.%

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:05 10-11-2007
    Cyril Konst



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, такая задача:
    Скопировать содержимое папки "Мои документы" и "Рабочий стол" из каждого профиля пользователя на другой компьютер. Профилей несколько десятков.
    Подзадача: Сжать всю эту инфу в 7z с сохранением структуры каталогов.

    Всего записей: 634 | Зарегистр. 12-08-2003 | Отправлено: 10:22 10-11-2007 | Исправлено: Cyril Konst, 10:25 10-11-2007
    Lutvun



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Во, то что надо. Спасибо.
     
    Добавлено:
    А можно так учесть несколько символов? Например %date:/:=.% чтобы и двоеточие и слеш заменяло.

    Всего записей: 286 | Зарегистр. 22-11-2005 | Отправлено: 12:05 10-11-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