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

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Romanchikprivet
    Пример файла в студию.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:16 20-10-2010
    wolf0425



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

    Цитата:
    Нужно задать дату модификации папки такую же, как дата создания любого *.txt файла, лежащего в ней.  
    любого - это какого? который мне нравится?
    Естати, если там никто даты вручную не правил и файлы не удалял - то там уже дата модификации папки равны дате последнего внесения изменений в папку, = последней операции создания/удаления файла/каталога в папке, в тривиальном случае - создания последнего из файлов.
     
    Может тебе дату модификации папки нужно установить в соответствии с датой модификации содержащихся в ней файлов, раз что-то править захотелось?

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 13:24 20-10-2010
    Romanchikprivet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001, вот пример файла.
    32423856754435457
    65437357373745735
    54726236262626266
    12342353467446366
    86574633536675585
    47473457237377337
    76548383838368556
    83547658387745775
    34834572478456833
    87547373775463737
    74378835276547563
     
    ДАТА ФОРМИРОВАНИЯ ФАЙЛА: 12.10.2010
     
     
    Файл имеет расширение txt. ДАТА вводится вручную при формировании файла, но ее иногда забывают ставить или файл на след день еще верный (ничего не происходило) и программа не дает сформировать новый файлик, следовательно надо менять руками, хотелось бы автоматизировать...

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 13:37 20-10-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romanchikprivetну то есть нужно проверить наличие строки ДАТА ФОРМИРОВАНИЯ ФАЙЛА и если её нет - дописать её в конец?
     
    для виндовой кодировки файла и батника  - наверно так:

    Код:
    @echo off
    chcp 1251
    1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt && exit
    1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%
     

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 13:51 20-10-2010 | Исправлено: wolf0425, 14:59 20-10-2010
    Romanchikprivet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425, он просто открывает файл на просмотр в проге стоящей по умолчанию для открытия этих файлов
     
    Добавлено:
    Не закрывает он соединение с файлом почему-то...
    При добавлении даты все в порядке, только когда дату проверяет...
    а что означает chcp 1251 ?

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 14:09 20-10-2010
    1nasty1



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, как заставить internеt explorer запускать html файл из папки не прописывая путь?

    Всего записей: 718 | Зарегистр. 11-03-2005 | Отправлено: 17:26 20-10-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:37 20-10-2010
    1nasty1



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    bomzzz
    Полный путь к файлу. Например файл start.bat находится в папке C:\Program Files\Program\, а сам файл .html находится глубже в папке  C:\Program Files\Program\test Нужно прописать не полный путь к файлу "C:\Program Files\Program\test \html.html" а так, чтобы папку можно было перемещать, но батник работал. что-то наподобие start iexplore /test/html.html Если запускать просто start /test/html.html то все открывается браузером по-умолчанию, что недопустимо в моем случае. Нужно IE. А в приведенном мною примере не работает. Даже с кавычками ))

    Всего записей: 718 | Зарегистр. 11-03-2005 | Отправлено: 18:29 20-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ./mypapka/myfile.html
     
    Добавлено:
    или так, если первый варинат не сработает
    start iexplore %~DP0mypapka/myfile.html

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:31 20-10-2010 | Исправлено: bomzzz, 18:37 20-10-2010
    1nasty1



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    bomzzz
    Не совсем так, видимо. IE открывает _http://./test/html.html
     
    Добавлено:
    Второй вариант сработал. Спасибо!

    Всего записей: 718 | Зарегистр. 11-03-2005 | Отправлено: 18:39 20-10-2010 | Исправлено: 1nasty1, 18:41 20-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    второй вариант работает, или если путь неполный ИЕ автоматически добавляет http://. проверял на ИЕ6

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:42 20-10-2010
    Nek1t



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

    Цитата:
    любого - это какого? который мне нравится?

    Абсолютно любого *.txt файла, находящегося в данной папке.  

    Цитата:
    Кстати, если там никто даты вручную не правил и файлы не удалял - то там уже дата модификации папки равны дате последнего внесения изменений в папку, = последней операции создания/удаления файла/каталога в папке, в тривиальном случае - создания последнего из файлов.

    В том-то и дело, что файлы правились => менялась дата их модификации(но не создания файлов) => менялась дата модификации папки. Теперь нужно откатить дату модификации папок обратно на дату создания папки, а следовательно самих файлов.

    Всего записей: 1388 | Зарегистр. 25-10-2006 | Отправлено: 19:55 20-10-2010
    wolf0425



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

    Цитата:
    Нужно задать дату модификации папки такую же, как дата создания любого *.txt файла, лежащего в ней.  
    Было бы неплохо, чтобы батнику задавался каталог, а уже в нем обрабатывались все папки по вышеуказанному условию.  .

    как-то так:

    Код:
    @echo off
    set _dir=.\
    for /d %%a in ("%_dir%*") do call :set "%%~a"
    exit
     
    :set
    for /f "tokens=1,2" %%b in (' dir /t:c "%~1\*.txt" 2^>nul ^| find /i ".txt" ') do nircmdc setfilefoldertime "%~1" "" "%%b %%c:59" & exit /b

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 20:37 20-10-2010
    Nek1t



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

    Всего записей: 1388 | Зарегистр. 25-10-2006 | Отправлено: 21:50 20-10-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемый 01MDM, ваш код (*) обладает одной особенностью:
     
    если файл содержит ровно одну строку,
    например,

    Код:
     
    s1
     

     то получаем (в случае двух файлов) что-то вроде [s1s2] вместо [s1][s2], т.е. "внутренние" скобки съедаются. Если же в файл s1 добавить перевод строки (т.е. в любом текстовом редакторе набрал строку, нажал "етнтер", сохранил),

    Код:
     
    s1
     
     

     то все работает как задумано. Можно ли поправить его для работы в случае и с одной строкой, а не только двумя (когда одна - искомая, а вторая - пустая)?
     
    ЗЫ
    Собственно, на вский случай ссылка на вопрос

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 00:10 21-10-2010 | Исправлено: BagaBaga, 00:24 21-10-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga, когда в редакторе набрать строку и нажать "етнтер" и сохранить - получается файл из одной строки - той что набирал.  
    Если после энтера нажать ещё пробел перед сохранением - из двух строк.
    Но то, что при незавершенной строке в файле батник выдает не то, что хотелось - лечить надо независимо от того как строки считать
     
    наверно ты это хотел:

    Код:
    @echo off
    for %%a in (*.txt) do for /f "usebackq delims=" %%i in ("%%~a") do 0>nul set /p="[%%i]"
    echo.
     

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 00:44 21-10-2010 | Исправлено: wolf0425, 08:30 21-10-2010
    BagaBaga

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

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 10:29 21-10-2010
    Romanchikprivet

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

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 13:45 21-10-2010
    manstopper



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Поиском не могу найти такую вещь. Как переименовать все файлы *.xxx в *.yyy во всех вложенных папках. Имя чтобы осталось неизменным. Заранее спасибо.

    Всего записей: 76 | Зарегистр. 17-12-2005 | Отправлено: 16:40 21-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ren *.xxx *.yyy

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:45 21-10-2010 | Исправлено: bomzzz, 16:46 21-10-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