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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 104 105 106 107 108

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    superman md



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Спасибо огромное, всё работает...
    Я уже и не надеялся..
    Сам бы точно ничего не сделал...

    ----------
    Нахожусь в очень сложном финансовом положении.
    Буду очень благодарен, если у вас найдется для меня занятие, которое поможет мне хоть немного заработать на дому!

    Всего записей: 1205 | Зарегистр. 27-06-2010 | Отправлено: 17:24 20-03-2011
    Vladins

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Для каждого *.mov файла нужно создать *.avs файл с некоторым текстом. Пытаюсь это сделать с помощью батника:

    Код:
     
    chcp 1251
    @echo off  
    for %%i in (*.mov) do 1>%%~ni.avs (
     echo LoadPlugin("C:\Program Files\XviD4PSP 5\dlls\AviSynth\plugins\mvtools2.dll"^)
     echo LoadPlugin("C:\Program Files\XviD4PSP 5\dlls\AviSynth\plugins\MT.dll"^)
     echo LoadPlugin("C:\Program Files\XviD4PSP 5\dlls\AviSynth\plugins\QTSource.dll"^)
     echo QTInput("%%~ni.mov"^)
     echo MT("""^
     echo multinum=2^
     echo multiden=1^
     echo mask=2^
     echo ml=10000^
     echo super = MSuper(pel=2, hpad=16, vpad=16^)
     echo bv1=MAnalyse(super, isb=true, blksize=16, overlap=8, searchparam=1, plevel=2^)
     echo fv1=MAnalyse(super, isb=false,blksize=16, overlap=8, searchparam=1, plevel=2^)
     echo forward_re  = MRecalculate(super, fv1, blksize=8, overlap=4, thSAD=100, searchparam=1^)
     echo backward_re = MRecalculate(super, bv1, blksize=8, overlap=4, thSAD=100, searchparam=1^)
     echo MFlowFps(super,backward_re,forward_re,num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden,mask=mask,ml=ml^)
     echo """, threads=4, overlap=16, splitvertical=false^)
    )
    pause
    exit
     

    Но на строке  echo MFlowFps(super,backward_re,forward_re,num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden,mask=mask,ml=ml^) батник вылетает, что то неправильно с символами.Подскажите что неправильно?

    Всего записей: 68 | Зарегистр. 22-05-2010 | Отправлено: 20:08 20-03-2011
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:23 20-03-2011
    Ortios



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

    Цитата:
    Но на строке  echo MFlowFps(super,backward_re,forward_re,num=FramerateNumerator(last)*multinum,den=FramerateDenominator(last)*multiden,mask=mask,ml=ml^) батник вылетает, что то неправильно с символами.Подскажите что неправильно?

    Надо так:

    Код:
    echo MFlowFps(super,backward_re,forward_re,num=FramerateNumerator(last^)*multinum,den=FramerateDenominator(last^)*multiden,mask=mask,ml=ml^)


    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 22:42 20-03-2011 | Исправлено: Ortios, 22:50 20-03-2011
    Vladins

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ortios Спасибо, работает!
    king_stiven Не понял суть вопроса...
     

    Всего записей: 68 | Зарегистр. 22-05-2010 | Отправлено: 01:39 21-03-2011
    FantoMax2

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго времени суток!
     
    Помогите сделать следующий batник:
    чтобы при двойном клике по файлу появлялось окно оболочки примерного следующего формата:
     
    1.ping
    2.tracert
    3.hostname
    4.ipconfig
    Введите порядковый номер:
     
    При вводе номера чтобы данное окно закрывалось и открывалось новое окно, либо пустое для ввода имени сервера или компьютера или IP-адреса (команда ping или tracert), либо с выводом соответствующей информации (команда hostname или ipconfig)
     
    С уважением!

    Всего записей: 6 | Зарегистр. 23-03-2011 | Отправлено: 08:29 23-03-2011
    res2001



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

    Код:
    @echo off
    echo 1.ping
    echo 2.tracert
    echo 3.hostname
    echo 4.ipconfig
    set /p num="Введите порядковый номер: "
    cls
    if "%num%" equ "1" goto:ping
    if "%num%" equ "2" goto:tracert
    if "%num%" equ "3" goto:hostname
    if "%num%" equ "4" goto:ipconfig
    goto:eof
    :ping
    set /p adr="Введите IP адрес или имя хоста: "
    ping %adr%
    goto:eof
     
    :tracert
    :hostname
    :ipconfig
     

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 09:21 23-03-2011 | Исправлено: res2001, 09:26 23-03-2011
    FantoMax2

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

    Цитата:
    @echo off  
    echo 1.ping  
    echo 2.tracert  
    echo 3.hostname  
    echo 4.ipconfig  
    set /p num="Введите порядковый номер: "  
    cls  
    if "%num%" equ "1" goto:ping  
    if "%num%" equ "2" goto:tracert  
    if "%num%" equ "3" goto:hostname  
    if "%num%" equ "4" goto:ipconfig  
    goto:eof  
    :ping  
    set /p adr="Введите IP адрес или имя хоста: "  
    ping %adr%  
    goto:eof  
     
    :tracert  
    :hostname  
    :ipconfig  
     

     
    Сейчас при нажатии в командной оболочке цифры 3 или 4 окно пропадает, а нужно чтобы выводилась требуемая по команде информация, лучше чтобы открывалось новое окно командной оболочки с нужной инфой. Помогите сделать :-( очень нужно!

    Всего записей: 6 | Зарегистр. 23-03-2011 | Отправлено: 10:00 23-03-2011 | Исправлено: FantoMax2, 10:01 23-03-2011
    res2001



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

    Цитата:
    Сейчас при нажатии в командной оболочке цифры 3 или 4 окно пропадает, а нужно чтобы выводилась требуемая по команде информация, лучше чтобы открывалось новое окно командной оболочки с нужной инфой. Помогите сделать  

    Ну да, я сделал только пинги, думал ты сам доработаешь остальные пункты по аналогии.
    Полностью видимо так будет:
    Код

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:30 23-03-2011 | Исправлено: res2001, 10:33 23-03-2011
    FantoMax2

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

    Цитата:
    Ну да, я сделал только пинги, думал ты сам доработаешь остальные пункты по аналогии.  
    Полностью видимо так будет:  
    Код

     
    Огромное спасибо за помощь! Буду дорабатывать дальше под свои цели, чтобы окно не пропадало, а открывалось новое с инфой!
     

    Всего записей: 6 | Зарегистр. 23-03-2011 | Отправлено: 10:36 23-03-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    FantoMax2
    Код поправил, добавил паузу в конце, чтобы окно не закрывалось.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:45 23-03-2011
    FantoMax2

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

    Цитата:
    Код поправил, добавил паузу в конце, чтобы окно не закрывалось.

     
    Огромное спасибо за помощь! Только начал изучать BAT-файлы, так что ещё много чему учиться!  
     
    Спасибо!

    Всего записей: 6 | Зарегистр. 23-03-2011 | Отправлено: 10:51 23-03-2011
    sL4yer



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброе время суток!
     
    Сделал батник, который конвертирует .WAV и .FLAC файлы в .MP3 используя консольные утилиты flac и lame. Условием работы программы есть наличие в %ProgramFiles% самых утилит (\FLAC\flac.exe и \LAME\lame.exe).
     
    Сам являюсь не очень опытным, или может очень неопытным в написании батников, потому хотелось бы узнать Ваше мнение на счет этого скрипта, может какие-то недочеты, какой-то кусок кода реализовать по-другому, более продуктивней или логичней. Жду отзывов .
     

    Код:
    @echo off
     
    REM УКАЗЫВАЕМ ПУТЬ ГДЕ НАХОДЯТСЯ КОНВЕРТЕРЫ
    set PATH="%ProgramFiles%\FLAC";"%ProgramFiles%\LAME";%PATH%
     
    if (%1) == () (
        echo Error: Arg required!
        goto :EOF
    )
     
    REM ПРОВЕРЯЕМ СУЩЕСТВУЕТ ЛИ КУЙ В ПАПКЕ НАЗНАЧЕНИЯ (%1)
    if /i exist "%1\*.cue" (
        dir /b "%1\*.cue">cue_name.tmp
        set /p cue_name=<cue_name.tmp
    ) else (
        echo Error: .cue not found
        goto :EOF
    )
     
    REM ПРОВЕРЯЕМ СУЩЕСТВУЮТ ЛИ ФАЙЛЫ (.FLAC)
    if /i exist "%1\*.FLAC" (
        REM ПЕРЕБИРАЕМ ВСЕ ФАЙЛЫ В ПАПКЕ НАЗНАЧЕНИЯ И ПЕРЕДАЕМ ИХ КОНВЕРТЕРУ В КАЧЕСТВЕ ПАРАМЕТРОВ
        for /f "tokens=* " %%i in ('dir /b %1\*.FLAC') do (
            FLAC -d "%1\%%i" -f
            call :convert %1 "%%i"
        )
    REM ТОЖЕ САМОЕ ДЛЯ (.WAV)
    ) else if /i exist "%1\*.WAV" (
        for /f "tokens=* " %%i in ('dir /b %1\*.WAV') do (
            call :convert %1 "%%i"
        )
    )
    pause
    goto :EOF
     
    :convert
    SETLOCAL
    REM ИЩЕМ В .CUE СТРОЧКИ И ЗАПИСЫВАЕМ ИХ В ВРЕМЕННЫЕ ФАЙЛЫ
    for %%i in (genre date title performer) do (
        findstr /i /C:"%%i" "%1\%cue_name%" >%%i.tmp
        set /p %%i=<%%i.tmp
    )
    REM ИМЯ СОХРАНЯЕМОГО (ПОСЛЕ КОНВЕРТАЦИИ ) ФАЙЛА
    set file_name=%~n2
    REM ТУТ ИЗВРАЩЕНСТВО, НО ПО ДРУГОМУ НЕ ДОДУМАЛСЯ КАК. ПЕРЕДАЁМ В LAME ИМЯ (.WAV) ФАЙЛА, ФАЙЛА (.MP3), ТЕГИ И "КАЧЕСТВО"
    lame -q 0 -b 320 "%1\%~n2".wav "%1\%~n2".mp3 --ty "%date:~9,100%" --ta "%performer:~11,-1%" --tg "%genre:~10,100%" --tl "%title:~7,-1%" --tn "%file_name:~0,2%" --tt "%file_name:~4,100%"
    ENDLOCAL
    del *.tmp

     
    P.S. Знаю что конструкции типа %1\*.WAV может привести к двойному слешу "\\" в пути, но при этом программа будет работать. Но пользователь может в конце пути не поставить слеш "\" (D:\Music) и программа не будет работать вообще.

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 14:02 23-03-2011
    res2001



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

    Цитата:
        dir /b "%1\*.cue">cue_name.tmp
        set /p cue_name=<cue_name.tmp  

    Если в каталоге несколько cue файлов, то возьмется только последний возвращенный dir. Тебя это устраивает?
    Можно присваивать переменным и без временного файла:
    for /f "tokens=* " %%i in ('dir /b %1\*.сue') do set cue_name=%%~i

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:24 23-03-2011 | Исправлено: res2001, 15:38 23-03-2011
    sL4yer



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

    Цитата:
    Если в каталоге несколько cue файлов, то возьмется только последний возвращенный dir. Тебя это устраивает?

    да, условие, что в папке должен быть только один cue.

    Цитата:
    for /f "tokens=* " %%i in ('dir /b %1\*.сue') do set cue_name=%%~i  

    точно! Я забыл, что поставил проверку вначале , точнее я её поставил после того как написал алгоритм. Только в этом выражении не понятно %%~i
    что означает эта тильда?

    Всего записей: 49 | Зарегистр. 22-10-2008 | Отправлено: 15:57 23-03-2011
    res2001



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

    Цитата:
    этом выражении не понятно %%~i
    что означает эта тильда?

    убирает обрамляющие кавычки, если они есть.
     
    Добавлено:
    sL4yer
    И еще, судя по коду у тебя обрабатываются флаки, если их нет вавы. А если в каталоге и то и другое есть, то обработаются только флаки. Это так и задумано?
    Кстати, перебор файлов удобнее делать таким циклом: for %%i in (*.wav *.flac) do ...
    без дира.
     
    Добавлено:
    И можно не проверять на присутствие файлов - если файлов нет, то цикл не выполнится, а тебе это и нужно.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:05 23-03-2011 | Исправлено: res2001, 16:17 23-03-2011
    INKOGNI



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

    Всего записей: 1355 | Зарегистр. 09-01-2006 | Отправлено: 16:22 23-03-2011 | Исправлено: INKOGNI, 18:52 23-03-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    INKOGNI
    А как это воспроизвести? У меня такого нет.
     
    Посмотрел в свойствах файла, есть кнопка разблокировать, но зачем она? Все и так открывается.

    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:13 23-03-2011 | Исправлено: 01MDM, 19:20 23-03-2011
    INKOGNI



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Просто сохранить какую-нибудь картинку или скачать файл через Mozilla Firefox. И потом посмотреть в свойствах скаченного файла. Насколько я понял, то создается дополнительный информационный поток данных  NTFS. Например если проверить заблокированную картинку антивирусом (я использую касперского), то в отчете будет, что проверено 2 файла. Если разблокировать, то при проверке 1 файл как и есть. Вобщем нашел в интернете утилу, которая удаляет эти "блочные" потоки у файлов.
    Если интересно, то можно прочитать тут:
    http://technet.microsoft.com/ru-ru/sysinternals/bb897440
     
    для разблокировки сразу многих файлов использовал утилу STREAMS (от Марка Руссиновича) с ключом -d

    Всего записей: 1355 | Зарегистр. 09-01-2006 | Отправлено: 19:22 23-03-2011 | Исправлено: INKOGNI, 19:23 23-03-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    INKOGNI
    Ага. посмотрел, файлы действительно с альтернативным потоком.

    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:47 23-03-2011
       

    Страницы: 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 104 105 106 107 108

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru