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

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tolyn77
    Я так понимаю, вы синтаксис спрашиваете? Он тут

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 08:20 13-02-2007 | Исправлено: Tipulatoid, 08:23 13-02-2007
    LeXorium

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

    Код:
    :start.bat
    for %%y in (*.avi) do (
        MKDIR "screenshots"
        echo.Import^("E:\!!!Scans\common\common.avs"^)
        echo.DoIt^("%%~dpy%%y","%%~dpyscreenshots\"^)
    ) > "%%~ny.avs"
     
    for %%y in (*.avs) do (
        C:\PROGRA~1\MPLAYE~1\MPUI.exe "%%y"
    )
     

     

    Код:
    :comman.avs
    function DoIt(string filename,string path)
    {
            avisource(filename)
        killaudio()
                   SelectRangeEvery(5400,1)
        ConvertToRGB24()
        ImageWriter(path,type="jpeg")
        return last
    }
     

     
    По идее, эта связка должна делать для каждого найденного avi-файла скриптик avs и запуская на воспроизведение, пплейером делать скриншоты, складывая их в папку screenshots.
     
    Но, этого не происходит, потому, что MPUI.exe надо скормить полный путь, а получается только название файла avs, без пути. Для этог плейера это оказалось критично, mpclassic играл без проблем в той связке, но не заканчивал работу самостоятельно после каждого файла.
     
    А теперь, внимание вопрос:
     
    1. Сделать так, чтобы скрипт работал во всех низлежащих подпапках, а в идеале, начальную папку можно было выбрать.
    2. Чтобы в процессе работы на каждый avi-файл делался avs-скрипт, и в той же папке директорию screenshots куда срабатывал полученный скрипт.
    После успешного окончания которого, avs-файл бы удалялся.
     
    Заранее спасибо.

    Всего записей: 9 | Зарегистр. 15-11-2005 | Отправлено: 08:23 13-02-2007
    yurkesha



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

    Код:
    FOR /R %%y in (*.AVI)
    отработает и для всех вложенных подпапок...

    Код:
    %%~ny.avs
    -
    Цитата:
    %~nxI - переменная %I заменяется только на имя файла и его расширение  
    - обрати внимание...
    Добавлено:
    А вот так
    Код:
    FOR /R %1 %%i IN (*.AVI)
    для папки переданной в качестве первого параметра в командной строке и всех вложенных подпапок...

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 21:33 13-02-2007 | Исправлено: yurkesha, 21:46 13-02-2007
    tolyn77



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

    Всего записей: 1499 | Зарегистр. 07-09-2004 | Отправлено: 08:25 14-02-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tolyn77
    Нет, в Bat! этого нельзя. Это ведь GUI - программа

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 10:00 14-02-2007
    LeXorium

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yurkesha
    Спасибо, но мне бы готовое решение, а то от этих процентов голова кругом.

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



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

    Цитата:
    мне бы готовое решение


    Код:
     
    @echo off
    setlocal
    set /p "start_dir=Please, enter the starting directory: "
    for /r %start_dir% %%a in (*.avi) do (
    md "%%~dpascreenshots" 2>nul
    echo.Import^("E:\!!!Scans\common\common.avs"^)
    echo.DoIt^("%%a","%%~dpascreenshots\"^)
    ) > "%%~dpna.avs"
    for /r %start_dir% %%a in (*.avs) do (
    C:\PROGRA~1\MPLAYE~1\MPUI.exe "%%a"
    del /q "%%a"
    )
     

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Ничего не пойму:  
    почему выдаваемые скрипты avs (за исключением скрипта в первой по порядку папке)
    имеют вместо одной, две записи:

    Код:
    Import("E:\!!!Scans\common\common.avs").Import("E:\!!!Scans\common\common.avs")
     

    Всего записей: 9 | Зарегистр. 15-11-2005 | Отправлено: 06:20 15-02-2007 | Исправлено: LeXorium, 06:21 15-02-2007
    w8er



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Вообщем есть  батничек у меня, в нем забиты айпишники одного дома, тоесть ипы все разные. Батник проверяет пингами связь и если ип пингуется то записывает данный айпишник в тхт файл. У меня вопрос, а как можно написать батничек чтоб можно было просто загоянть другие ипы не перебивая их вручную, а чтоб на автомате ?
    Т.е. я допустим захотел забить айпишники  
    192.168.0.1
    192.167.2.3
    123.32.45.6
    123.76.88.9
    112.43.76.0      
    как сделать так чтоб они автоматом забивались в мою структуры (мб черезчур тупую)
    ping 192.168.0.2 -n 1 -l 1450 && echo 192.168.0.2 >> listing.txt  
    Заранее сенькс !!!.

    Всего записей: 9 | Зарегистр. 26-07-2006 | Отправлено: 08:25 15-02-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    w8er
    Сохрани список ip-шников в отдельный файл (потом можно будет его редактировать - добавлять-удалять)
    Допустим, имя его будет ip.txt
     
    В батнике

    Код:
    @echo off
    setlocal
    for /f "tokens=*" %%a in (ip.txt) do (
       ping %%a -n 1 -l 1450 && echo %%a >> listing.txt
    )


    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 08:58 15-02-2007
    S377



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
    Давно хотел разобраться с *.bat файлами, но все как то не очень получалось кроме создания бэкапа дело не дошло. Но зайдя на ваш сайт очень удивился изобилием решений на *.bat файлах.
    Мне стыдно задавать такой вопрос, но мне нужен очень на него ответ:
    создаю батник к примеру такой
    "c:\Program Files\Everest\everest.exe"
    HS_DELAY 5000  
    start "c:\Program Files\Far\far.exe"
     
    Что нужно сделать чтоб батник не ждал закрытия запущенной программы для выполнения следующей комманды?

    Всего записей: 39 | Зарегистр. 28-11-2006 | Отправлено: 12:09 15-02-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    S377
    Start поставь перед вызовом

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:29 15-02-2007
    jawAka

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

    Цитата:
    Есть файл file.txt c именами папок и файлов, полученный по команде dir /s/b > file.txt  
    Он большой (мегабайт 20-30).  
    Хочу найти в нём те строчки, длина которых приближается к 256 позициям. Ну, скажем, больше или равна 240 байтам.  
     
    Можно ли сделать это с помощью пакетника?

    findstr /r /C:..........{240точек ровно, добейте сами } file.txt >file240.txt  
     
    Добавлено:

    Цитата:
    ping %%a -n 1 -l 1450 && echo %%a >> listing.txt  

    Незнаю как у вас, а у меня на w2000 ping всегда выполняется удачно... хоть 0% потерь хоть 100
    Посему родился код
    @echo off
    for /l %%a in (1,1,254) do ping -n 1 192.168.1.%%a|find "(0%%">nul &&echo 192.168.1.%%a всё хорошо ||echo 192.168.1.%%a всё плохо!!!
     
    По моему замечательно... Симпотичней чем шапке вроде
     

    Всего записей: 6 | Зарегистр. 15-02-2007 | Отправлено: 12:36 15-02-2007
    S377



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

    Цитата:
    S377  
    Start поставь перед вызовом

    Всмысле вот так?:
    start  
    "c:\Program Files\Everest\everest.exe"
    start  
    "c:\Program Files\Far\far.exe"
    поставил первая программа запустилась а вторая нет  
    если первую закрываю то только тогда запускается вторая
    и к тому же досовские окошки сами не закрываются

    Всего записей: 39 | Зарегистр. 28-11-2006 | Отправлено: 13:08 15-02-2007
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В смысле вот так:
    Код:
    start  "" "c:\Program Files\Everest\everest.exe"  
    start  "" "c:\Program Files\Far\far.exe"


    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 13:24 15-02-2007
    S377



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

    Цитата:
    yurkesha

    вот спасибо!!!
    а я как только не пробовал, но видимо для правильного варианта у меня мозгов не хватило
    еще раз спасибо!

    Всего записей: 39 | Зарегистр. 28-11-2006 | Отправлено: 13:32 15-02-2007
    Elroir



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

    Цитата:
    выдаваемые скрипты avs (за исключением скрипта в первой по порядку папке)  
    имеют вместо одной, две записи

    В командах echo, убери точки и поставь вместо них пробелы:

    Код:
     
    echo Import^("E:\!!!Scans\common\common.avs"^)
    echo DoIt^("%%a","%%~dpascreenshots\"^)
     
     
     
    Добавлено:
    jawAka

    Цитата:
    findstr /r /C:..........{240точек ровно, добейте сами } file.txt >file240.txt

    Не будет работать - для findstr это слишком длинная строка поиска.

    Цитата:
    Незнаю как у вас, а у меня на w2000 ping всегда выполняется удачно

    На Win2000 он у всех выполняется удачно
    Эта проблемма здесь неоднократно обсуждалась. Код интересный - только я бы добавил ключ -w 1000, чтобы не ждать лишнее время.

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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    S377
    Насколько я понял тебе надо запустить две проги одновременно? Тогда так  

    Код:
     
    @Echo off
    "c:\Program Files\Everest\everest.exe" | "c:\Program Files\Far\far.exe"
     


    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:21 15-02-2007
    yurkesha



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

    Цитата:
    Тогда так  

    Код:
    @Echo off  
    "c:\Program Files\Everest\everest.exe" | "c:\Program Files\Far\far.exe"  

     

    Ну а если первая прога не запустится по каким либо причинам? Или ошибку выдаст? Тогда вторая даже не сделает попытки запуститься...
    Не-е - такой способ не лучше...

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 14:40 15-02-2007
    jawAka

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    по -w  на любителя
     
    А про 240 - всё равно до конца рабочего дня допинаю одной строкой батника ...
     
     
    Добавлено:
    @echo off
    setlocal enabledelayedexpansion
    for /f %%f in (file.txt) do (set f=%%f& echo !f:~240!|find "(ECHO)">nul || echo %%f>>file240.txt)

    Всего записей: 6 | Зарегистр. 15-02-2007 | Отправлено: 15:00 15-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru