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

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

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

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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    evle



    1 + int rand(100);
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR

    Цитата:
    как передать в качестве параметра ссылку содержащую символы & ?  

    Поставить перед амперсандами символ «^».
    Либо передать в кавычках и воспользваться вот этим:
    %~1 Expands %1 and removes any surrounding quotation marks ("").  

    Цитата:
    Если это путь к батнику, то можно так:

    Первый вопрос был про обычную переменную %programfiles%.

    ----------
    For every complex problem, there is a solution that is simple, neat, and wrong.

    Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 14:36 10-02-2007 | Исправлено: evle, 14:40 10-02-2007
    igor_andreev

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

    Цитата:
    Можно взглянуть?

    http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=10066&start=40#11

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 14:37 10-02-2007
    evle



    1 + int rand(100);
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

    Зачем %random% и цифры, если есть «%time::=_%»?

    ----------
    For every complex problem, there is a solution that is simple, neat, and wrong.

    Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 14:39 10-02-2007
    Elroir



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

    Цитата:
    Зачем %random% и цифры, если есть «%time::=_%»?

    Да... генератор неповторяющихся чисел получается помощнее, чем %random%, да еще и последовательных (в пределах суток)  
    Я про time даже и не думал.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:53 10-02-2007
    LeXorium

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

    Код:
    E:\MCODER\mplayer\mplayer %1 -frames 100 -vo null -vf cropdetect > crop.log
     

    выдает файл вот с таким содержимым:

    Код:
    MPlayer dev-CVS-050928-16:38-3.4.2 (C) 2000-2005 MPlayer Team
    CPU: Advanced Micro Devices  (Family: 8, Stepping: 2)
    Detected cache-line size is 64 bytes
    CPUflags:  MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0
    Compiled with runtime CPU detection - WARNING - this is not optimal!
    To get best performance, recompile MPlayer with --disable-runtime-cpudetection.
     
    Playing 2006.07.09_БУНКЕР_-_14_20.mpg.
    MPEG-PS file format detected.
    VIDEO:  MPEG2  720x576  (aspect 2)  25.000 fps  4200.0 kbps (525.0 kbyte/s)
    ==========================================================================
    Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
    AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000->192000)
    Selected audio codec: [mp3] afm:mp3lib (mp3lib MPEG layer-2, layer-3)
    ==========================================================================
    Opening video filter: [cropdetect]
    ==========================================================================
    Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
    VDec: vo config request - 720 x 576 (preferred csp: Mpeg PES)
    Could not find matching colorspace - retrying with -vf scale...
    Opening video filter: [scale]
    Opening video filter: [lavc]
    Could not find matching colorspace - retrying with -vf scale...
    Opening video filter: [scale]
    VDecoder init failed
    Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.4.0b
    Selected video codec: [mpeg12] vfm:libmpeg2 (MPEG-1 or 2 (libmpeg2))
    ==========================================================================
    Building audio filter chain for 48000Hz/2ch/s16le -> 0Hz/0ch/??...
    AO: [dsound] 48000Hz 2ch s16le (2 B/s)
    Building audio filter chain for 48000Hz/2ch/s16le -> 48000Hz/2ch/s16le...
    Starting playback...
    VDec: vo config request - 720 x 576 (preferred csp: Planar YV12)
    VDec: using Planar YV12 as output csp (no 0)
    Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
    VO: [null] 720x576 => 768x576 Mpeg PES  
    crop area: X: 21..712  Y: 8..551  (-vf crop=688:544:24:8).....
    .......crop area: X: 21..712  Y: 5..551  (-vf crop=688:544:24:8)
    crop area: X: 21..713  Y: 2..567  (-vf crop=688:560:24:6)
    crop area: X: 21..713  Y: 2..567  (-vf crop=688:560:24:6)
     
     
    Exiting... (End of file)
     

     
    какой командой мне можно из этого файла забрать текстовую строку от слова CROP, скажем с 100-й строчки?  
    В данном случае, вот эти:

    Код:
    crop=688:560:24:6
     

     
    Целиком строчку
     
    -vf crop=688:560:24:6
     
    тоже пойдет, но хуже...
    спасибо.

    Всего записей: 9 | Зарегистр. 15-11-2005 | Отправлено: 15:01 10-02-2007 | Исправлено: LeXorium, 15:03 10-02-2007
    ViSiToR



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

    Цитата:
    проверять имя файла с %random% - в некоторых случаях это будет быстрее.

    Может и быстрее (хотя куда уже быстрее), но...
     

    Цитата:
    Зачем %random% и цифры, если есть «%time::=_%»?

     
    Ребята, я немного наверно недообъяснил цель этого метода...
     
    Тут нужно просто красиво создать новое имя файла, без всяких случайно сгенерированных чисел, и без приставки даты и/или времени к имени файла - точно также как это делает архиватор 7z (с ключом -aot), если файл существует, то присваивается имя файла плюс _1, если и этот файл существует, то идёт дальше по цифрам - этот метод очень полезен если постоянно в каталог помещается один и тот же архив (или просто файл), но содержание каждый раз другое, и нужно просто зафиксировать последовательность появлении этого файла в каталоге (и приставка времени тоже может это достичь, но именно таким образом, оно коротко, и ясно ).
     
    igor_andreev

    Цитата:
    http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=10066&start=40#11

    Спасибо! будем смотреть    - а распаковка где?  или это только скачка?


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:15 10-02-2007 | Исправлено: ViSiToR, 15:18 10-02-2007
    Elroir



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

    Код:
     
    @echo off
    setlocal
    set line=99
    for /f "skip=%line% tokens=8 delims=) " %%a in (crop.log) do (
    if not defined string set string=%%a
    )
    echo %string%  
     

    В выделенной строчке, пишешь номер строки предшествующей той, которая тебе нужна.  
     
    ViSiToR
    Понял

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:24 10-02-2007
    ViSiToR



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

    Цитата:
    Поставить перед амперсандами символ «^»

    Нет возможности, это не известная ссылка, т.е как бы есть (скриптом vbs), но тогда уже проще заменить эти символы на их hex-аналоги, что в принципе я и сделал. Спасибо ещё раз!

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:30 10-02-2007
    igor_andreev

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

    Цитата:
     а распаковка где?

    Добавить не сложно, но мне не надо. Я же wget-ом все подряд качаю, не только архивы, но и *.exe и *.txt с lib.ru и т.д.

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 15:41 10-02-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    igor_andreev
    Люди, можно вопрос? А зачем качать wget-ом?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:43 10-02-2007
    LeXorium

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо.
    А теперь как эту строчку запихать вот сюда:

    Код:
     
    E:\MCODER\mplayer\mencoder.exe %1 -priority idle -oac copy -vf pp=md,hqdn3d=2:1:2,crop=688:560:24:6,scale=720:-2,harddup -ofps 25 -sws 9 -noskip -ffourcc DX50 -ovc lavc -lavcopts vqscale=2:vcodec=mpeg4:v4mv:trell:keyint=150:mbd=2:cbp:mv0:preme=2:mpeg_quant -o k:\%1.xvid.avi  
     

    Всего записей: 9 | Зарегистр. 15-11-2005 | Отправлено: 15:46 10-02-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LeXorium
    Вместо "echo %string%" в последней строке батника, пишешь:

    Код:
     
    E:\MCODER\mplayer\mencoder.exe %1 -priority idle -oac copy -vf pp=md,hqdn3d=2:1:2,%string%,scale=720:-2,harddup -ofps 25 -sws 9 -noskip -ffourcc DX50 -ovc lavc -lavcopts vqscale=2:vcodec=mpeg4:v4mv:trell:keyint=150:mbd=2:cbp:mv0:preme=2:mpeg_quant -o k:\%1.xvid.avi
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:52 10-02-2007 | Исправлено: Elroir, 15:52 10-02-2007
    LeXorium

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

    Код:
    crop=688:560:24:6 ,scale=720
     

    Всего записей: 9 | Зарегистр. 15-11-2005 | Отправлено: 15:54 10-02-2007
    Elroir



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

    Код:
     
    @echo off  
    setlocal  
    set line=99  
    for /f "skip=%line% tokens=8 delims=) " %%a in (crop.log) do (  
    if not defined string set "string=%%a"
    )  
     

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:02 10-02-2007
    igor_andreev

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

    Цитата:
    А зачем качать wget-ом?

    А чем еще? Браузером неудобно.

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 16:09 10-02-2007
    LeXorium

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Спасибо тебе безмерное. И напоследок, скажи как исправить вот этот батник (go.bat), чтобы он "скармливал" на другой батник (enc.bat) ВСЕ найденные в текущей и низлежащих каталогах файлы?
     

    Код:
    :go.bat
    chcp 1251  
    for %%v in (*.mpg) do call enc.bat %%v
     

     
    Да, и как вставлять имя с путём в батник, какой строкой? И как сконфигурить то, что, ты мне сказал выше, чтобы всё это рабтало корректно?
     

    Код:
    :enc.bat
    E:\MCODER\mplayer\mplayer %1 -frames 100 -vo null -vf cropdetect > crop.log
     
    setlocal
    set line=129
    for /f "skip=%line% tokens=8 delims=) " %%a in (crop.log) do (
    if not defined string set "string=%%a"
    )
     
    E:\MCODER\mplayer\mencoder.exe %1 -priority idle -oac copy -vf pp=md,hqdn3d=2:1:2,%string%,scale=720:-2,harddup -ofps 25 -sws 9 -noskip -ffourcc DX50 -ovc lavc -lavcopts vqscale=2:vcodec=mpeg4:v4mv:trell:keyint=150:mbd=2:cbp:mv0:preme=2:mpeg_quant -o k:\%1.xvid.avi  
     

    Всего записей: 9 | Зарегистр. 15-11-2005 | Отправлено: 16:31 10-02-2007 | Исправлено: LeXorium, 16:33 10-02-2007
    Elroir



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

    Цитата:
    Браузером неудобно

    Это понятно . Но ведь ты все равно начинаешь закачку, кликнув по ссылке правой клавишей мышки и выбрав скачать (wget-ом). Или я неправильно понимаю?
    ViSiToR-у wget нужен, чтобы после скачивания можно было разархивировать файл, но ты написал, что все им качаешь.
     
    Добавлено:
    Все -дошло. Добавляется описание и т.д.
     
    Добавлено:
    LeXorium

    Код:
     
    :go.bat  
    chcp 1251  
    for /r %%v in (*.mpg) do call enc.bat "%%v"  
     

    Все остальное - как было.  

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:33 10-02-2007
    igor_andreev

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

    Цитата:
    Добавляется описание и т.д

    Не поэтому. Wget я сильно зауважал после скачивания одной CHM-книженции с fixdown.com. Там в то время(год эдак 2002) было несколько зеркал, но ни до одного было не достучаться. Пробовал и на ADSL у знакомых и через спутник и всеми возможными качалками, какие в инете есть. Дохли все качалки, как бобики, нет такого файла там и все. Так я у себя дома на обычном диалапе натравливал на эти зеркала батник приблизительно такого типа:
    :loop
    wget -c -параметры_всякие http://www.fixdown.com/soft/19436.asp?soft=gd165down
    wget -c -параметры_всякие http://www.fixdown.com/soft/19436.asp?soft=gnx165down
    wget -c -параметры_всякие http://www.fixdown.com/soft/19436.asp?soft=el165down
    find /i "' saved [" wget-log && goto :eof
    goto :loop
    Диалап правда был "бесплатный день", время с 9 утра и до 6 вечера не считалось. И нормально, иногда по 10-20 Кб в час, иногда ничего за весь день, но wget выдрал таки этот файл у китайцев недели за три. С тех пор у меня ни одной гуевой качалки на компе не было

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 17:10 10-02-2007
    ViSiToR



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

    Цитата:
    ViSiToR-у wget нужен, чтобы после скачивания можно было разархивировать файл

    Нет, мне он не очень то и нужен, я приютил неплохо curl (для распаковки мне достаточно чтобы в указанное место скачался архив). Я поинтересовался творением (довольно неплохим) igor_andreev'а т.к любопытность и стремление к познаниям привыше всего!
     

    Цитата:
    Все -дошло. Добавляется описание и т.д.

    Это неважно чем качать, главное верно принимать данные и выводить их в файл (благодоря igor_andreev'ву я вскоре и это прикручю к батнику ).
     
    P.S
    Батник для скачки и распаковки я сделал не для себя, а точнее не для собственного использования, мне просто стало интересно, смогу ли я это сделать, казалось бы столь примитивными средствами (хотя очень иногда полезными) - и как оказалось, смог - так что пользуйтесь наздоровье .


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 18:26 10-02-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Понял. Интересная статья - я, правда, тоже не со всем согласен
     
    ViSiToR
    Я тоже curl-ом пользуюсь - для смены IP через раутер.
    P.S. С шапкой, все-таки нужно что-то делать - твоими стараниями она очень быстро растет

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:44 10-02-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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru