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

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

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

vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 17:45 04-09-2010 | Исправлено: Accessor, 18:04 28-09-2010
    king_stiven

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

    Цитата:
    Работа с текстом, датой, и файлами »  


    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 17:35 08-11-2010
    SYaros



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    в) Использовать формат YYYYMMDDHHMM, поместив дату до 'backup':
     
    WinRAR a -ag+YYYYMMDDHHMM backup
     

    Всего записей: 50 | Зарегистр. 22-04-2006 | Отправлено: 17:51 08-11-2010
    david141



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет. Очень нужна ваша помощь.
    Не получается добавить цифру в файл.
    Делаю так:
     
    echo IsRelative=1>>profiles.ini
    Не добавляется цифра 1
     
    Записывается в файл так: IsRelative=
    А нужно так без пробелов: IsRelative=1
     
    Пожалуйста.

    Всего записей: 87 | Зарегистр. 08-11-2010 | Отправлено: 17:57 08-11-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    david141
    Делай так:
    echo IsRelative=1 >>profiles.ini

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:58 08-11-2010
    david141



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

    Цитата:
    Делай так:
    echo IsRelative=1 >>profiles.ini

     
    Тогда получается пробел после IsRelative=1...
    А он не нужен. Вернее с из-за его не работает файл

    Всего записей: 87 | Зарегистр. 08-11-2010 | Отправлено: 18:08 08-11-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    david141
    1>>profiles.ini echo IsRelative=1

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 18:43 08-11-2010
    david141



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





    спасибы — в ПМ!

    Всего записей: 87 | Зарегистр. 08-11-2010 | Отправлено: 18:51 08-11-2010 | Исправлено: vu1tur, 19:01 08-11-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    david141
    А можно и так
    echo IsRelative=^1>>profiles.ini
     

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 19:53 08-11-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SYaros
    чтобы скопировать последний созданный *backup.rar в папке
     

    Код:
     
    pushd D:\B1\
    for /F "tokens=*" %%a in ('dir *backup.rar /b /A:-D /O:-D /T:C 2^>nul') do xcopy "D:\B1\%%a" "\\Tovar\base\*.*" & exit  
     

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 20:43 08-11-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kirillhome
    но всё таки каноничнее и безгеморройнее всё таки

    Цитата:
    1>>profiles.ini echo IsRelative=1


    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 21:32 08-11-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну если хотите ещё поизвращаться с вариантами - вот ещё
    Код:
    (echo IsRelative=1)>>profiles.ini
    но переставлять перенаправление в начало команды - заметно безгеморройнее

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 22:21 08-11-2010 | Исправлено: wolf0425, 22:21 08-11-2010
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите с задачей. Есть ini-шник. С поиском имени секции нет проблем, но как можно обратиться к первой строке после имени найденной секции? Или как-то проиндексировать инишник, чтоб можно было извлечь нужную строку/строки?

    Код:
    [section1]
    value1=a
    value2=b
     
    [section2]
    value1=c
    value2=d
     
    ...

    Требуется в итоге получить:

    Код:
    x1=a
    y1=b
    x2=c
    y2=d

    Всего записей: 673 | Зарегистр. 27-07-2007 | Отправлено: 07:12 09-11-2010 | Исправлено: Maximus777, 07:14 09-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну как как если строка нашлась то у какой нибудь переменной сменить значение с нуля на единицу например
     
    Добавлено:
    или так внутри цикла разбора текстового файла, первой строкой проверять чему равна переменная некая, в второй строкой присваивать этой переменной значение I. тогда каждый цикл итеррации в переменной сначала будет предъидущее значение цикла.

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 07:23 09-11-2010
    smirnvlad

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

    Цитата:
    Помогите с задачей. Есть ini-шник. С поиском имени секции нет проблем, но как можно обратиться к первой строке после имени найденной секции? Или как-то проиндексировать инишник, чтоб можно было извлечь нужную строку/строки?

     
    Подробнее...

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 07:35 09-11-2010 | Исправлено: smirnvlad, 10:27 09-11-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    так вот примерно но тут ошибки могут быть
     
    setlocal enabledelayedexpansion
    for /f "delims=" %%I in (my.ini) do (
    if !previous!==[section2] set mystring=%%I
    set previous=%%I
    )
    echo %mystring%
    pause
     
     
    Добавлено:
    чтоб извлечь строки нужно использовать что переменная mystring изменила значение
     
    Добавлено:
    а можно два цикла сделать - в первом почитать номер нужной строки,  а во второй добавить параметр пропускающий это количество строк с начала.

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 07:37 09-11-2010 | Исправлено: bomzzz, 09:25 09-11-2010
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо за предложенные варианты. Придётся сейчас все опилки перетряхнуть. Ох как бы классно было, если бы код хоть маломальски комментировался. Но в любом случае благодарю. Что-нибудь да выпилю.

    Всего записей: 673 | Зарегистр. 27-07-2007 | Отправлено: 09:19 09-11-2010
    smirnvlad

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

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 10:28 09-11-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 10:33 09-11-2010
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    smirnvlad
    спасибо огромное. Вообще ваш ответ надо в шапку с заголовком "Разбор *.ini". Очень красивое решение. Уже переделал для себя код. Один вопрос только остался, в коде есть переход на конец файла. А если там дальше ещё код идёт, как это урегулировать? goto :next вместо goto :eof не прокатывает.
    У меня в инишнике четыре секции, из каждой надо вынуть только первый параметр. Как бы отдельно батник по этой задаче работает отлично, но после разбора секций надо же другую работу проделать. В параметрах хранятся пути, вот по этим путям надо сходить и сделать своё дело.

    Всего записей: 673 | Зарегистр. 27-07-2007 | Отправлено: 10:55 09-11-2010 | Исправлено: Maximus777, 10:58 09-11-2010
    OOD

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

    Код:
    cd c:\dir
    echo y | del *.vir

    так происходит удаление с папки dir, а если папок множество подпапок и т.д. как их почистить все по расширению?

    Всего записей: 3341 | Зарегистр. 20-05-2006 | Отправлено: 11:16 09-11-2010
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 9
    vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru