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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    NIKZZZZ



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

    Цитата:
    А хотелось бы типа:
    ***** vers_modul.txt           ***** VERS_MODUL1.txt
    VD_ISK21    33.3                  VD_ISK21    33.2  

    Результат работы FC можно привести к подобному виду, но что делать с длиной строки? Для чего нужен такой файл? Если для дальнейшей обработки, проблем нет. Но для документа нужно знать максимальную длину строки или ограничиться определенной, при этом длинные строки будут обрезаться и можно не увидеть различия.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 06:56 21-08-2007
    Yashustik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день,
     
    Помогите решить следующую проблему:
    необходимо написать батничек, задача которого считать версию (набор цифр) из файла с настройками, хранящемся на локальной машине, сравнить ее с цифрой из другого файла и в случае не совпадения, т.е. текущая версия более новая, запустить пакет обновлений., т.е. скопировать группу файлов из одного места на локальную машину.
     
    Текст строки с содержанием версии из файла с настройками,  
    ................
    AIFVersion=V9.1.3.5.0000000002
    ................

    Всего записей: 6 | Зарегистр. 21-08-2007 | Отправлено: 07:48 21-08-2007
    mbku

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Нужно для документа. Если можно и несложно приведите пример для определенной длины строки. Я потом если, что длину поменяю.

    Всего записей: 26 | Зарегистр. 03-08-2007 | Отправлено: 07:48 21-08-2007
    king_stiven

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

    Код:
    for /f "usebackq tokens=*" %%c in (`find "AIFVersion" 1.txt`) do (
        for /f "usebackq tokens=*" %%d in (`find "AIFVersion" 2.txt`) do (
            if %%c NEQ %%d команда
        )
    )
     
     
    1.txt и 2.txt файлы с настройками

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо огромное, сейчас все проверю
     
    Добавлено:
    что то у меня не работает, ошибок нет, но делает не то

    Код:
     
    for /f "usebackq tokens=*" %%c in (`find "AIFVersion" C:\Work\version.properties`) do (  
        for /f "usebackq tokens=*" %%d in (`find "AIFVersion" C:\Work\1.txt`) do (  
            if %%c NEQ %%d xcopy C:\Work\1\*.* "C\Work\2\" /r /e /y  
        )  
    )  
     

    1. Пишет, что скопировано файло:1, а на самом деле ничего не скопировано
    2. Копирует даже если AIFVersion в 1.txt меньше чем в  version.properties
     






    спасибы — в ПМ

    Всего записей: 6 | Зарегистр. 21-08-2007 | Отправлено: 10:24 21-08-2007 | Исправлено: vu1tur, 10:34 21-08-2007
    king_stiven

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

    Цитата:
    xcopy C:\Work\1\*.* "C\Work\2\

     
    пропустил : после второго C
    приведи пример строчек с "AIFVersion" из C:\Work\version.properties и из C:\Work\1.txt , какая версия более новая
     
     
     
    Добавлено:
    Yashustik
     

    Код:
    for /f "usebackq tokens=* delims=AIFVersion=" %%c in (`find "AIFVersion" C:\Work\version.properties`) do set "properties=%%c"
    for /f "usebackq tokens=* delims=AIFVersion=" %%d in (`find "AIFVersion" C:\Work\1.txt`) do set "txt=%%d"
    if %properties% LSS %txt% xcopy C:\Work\1\*.* C:\Work\2\ /r /e /y

     
    Может так пойдёт? И ещё

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


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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    можно ли батником добавить в контекстное меню опредленного типа файлов и/или папки нужный мне пункт?

    Всего записей: 2370 | Зарегистр. 15-07-2005 | Отправлено: 11:57 21-08-2007
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:05 21-08-2007
    NIKZZZZ



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

    Цитата:
    А хотелось бы типа:
    ***** vers_modul.txt           ***** VERS_MODUL1.txt
    VD_ISK21    33.3                  VD_ISK21    33.2  

    Решать данную задачу с помощью батника нецелесообразно, поэтому возможное решение отправлю в ПМ.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:12 21-08-2007
    Yashustik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Вот пример строчек AIFVersion=V.9.1.3.5.00000002 из version.properties, а в файле 1.txt AIFVersion=V.9.1.3.5.00000003

    Всего записей: 6 | Зарегистр. 21-08-2007 | Отправлено: 12:19 21-08-2007
    Karimius

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрые люди, помогите пожалуйста.
    Необходимо написать батничек для анализа лога. Лог в формате txt. Лог пополняется в реальном времени. Тип текста такой:
    pc1 - passed
    pc2 - passed
    pc3 - faild
    pc4 - passed
    чтобы он по failed и passed статистику собирал.
    Реально ли это?

    Всего записей: 3 | Зарегистр. 21-08-2007 | Отправлено: 12:19 21-08-2007
    rosalin



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята подскажите батничек который ищет файлы с определенным расширением  
    в директории и ее подиректориях и удаляет старее опр даты

    Всего записей: 2588 | Зарегистр. 15-04-2003 | Отправлено: 12:23 21-08-2007
    Yashustik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Второй вариант заработал ,  
    огромное спасибо

    Всего записей: 6 | Зарегистр. 21-08-2007 | Отправлено: 12:29 21-08-2007
    Nagual



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

    Цитата:
    А в каком виде список файлов?

    file1
    file2
    file3
    NIKZZZZ

    Цитата:
    Чем?  
    dir /b /s c:\ИмяФайла  
    Это команда найдет его, если он вообще есть на C:

    так в том то и дело, что нужно не просто найти файл, а определить его полный путь и записать его в переменную

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:33 21-08-2007
    NIKZZZZ



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

    Цитата:
    определить его полный путь и записать его в переменную


    Код:
    for /f "dlims=" %%i in (`dir /b /s c:\ИмяФайла`) do set file=%%i


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:36 21-08-2007
    Yashustik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Еще один вопросик, а можно как то обработать ситуацию на наличе первого файла на машине.  
    То есть, если файла version.properties на машине нет, то считать что версия более старая и следовательно, надо произвести копирование.

    Код:
     
    for /f "usebackq tokens=* delims=AIFVersion=" %%c in (`find "AIFVersion" C:\Work\PDM_Yashurina\version.properties`) do set "properties=%%c"  
    for /f "usebackq tokens=* delims=AIFVersion=" %%d in (`find "AIFVersion" C:\Work\1.txt`) do set "txt=%%d"  
    if %properties% LSS %txt% xcopy C:\Work\1\*.* C:\Work\2\ /r /e /y
     

    Всего записей: 6 | Зарегистр. 21-08-2007 | Отправлено: 12:40 21-08-2007
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:46 21-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Yashustik
    1. проверяешь наличие файла
    set NewVersion=0
    if not exist C:\Work\PDM_Yashurina\version.properties set NewVersion=1
    2. Потом проверяешь  содержимое и если что присваиваешь переменной NewVersion=1
    3. Если NewVersion=1 - то копирование

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:47 21-08-2007
    Elroir



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

    Цитата:
    можно ли батником добавить в контекстное меню опредленного типа файлов и/или папки нужный мне пункт?

    Можно. Если ты знаешь какие записи добавлять в реестр - можно из батника писать в реестр с помощью утилиты reg.exe (в WinXP).
     
    rosalin

    Цитата:
    батничек который ищет файлы с определенным расширением  
    в директории и ее подиректориях и удаляет старее опр даты

    Здесь несколько раз обсуждался этот вопрос. Сделай поиск по слову "forfiles".
     
    Nagual
    А что мешает разобрать вывод команды dir for-ом?
     
    Karimius

    Код:
     
    @echo off
    set "cpassed=0"
    set "cfailed=0"
    for /f "tokens=3" %%a in (log.txt) do (
    if "%%a"=="passed" set /a "cpassed+=1"
    if "%%a"=="faild" set /a "cfailed+=1"
    )
    echo Passed - %cpassed%
    echo Failed - %cfailed%
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:48 21-08-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Karimius
    Если под статистикой понимать подсчет кол-ва удач и неудач, то так:

    Код:
    @echo off
    for /f "tokens=2 delims=- " %%a in ('type log.txt') do (
      if /i %%a==passed set /a passed+=1
      if /i %%a==failed set /a failed+=1
    )
    echo PASSED:%passed% FAILED:%failed%

     

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 12:52 21-08-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Закладки » Задачи на bat-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru