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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    RMR

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну например есть программа prog.exe, которая на директорию выше батника bat.cmd.
    Содержимое bat.cmd: start /wait ..\prog.exe
    Если запускать bat.cmd без параметров то все нормально, а если с параметром то ошибка.
     
    Добавлено:
    Вообщем я понял. Такое случается только если drag 'n drop юзать.

    Всего записей: 32 | Зарегистр. 23-11-2006 | Отправлено: 20:28 29-07-2008
    lamener

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

    Цитата:
     
    Вопрос:
    можно ли батом узнать размеры видео файла ?
    Ответ:
    Стандартными средствами нельзя. Поищи в интернете какую-нибудь консольную утилиту, которая может выдавать информацию о мультимедия-файлах.
     

    Может кто подскажет перерыл весь яндех и гугл ни чего нет !

    Всего записей: 25 | Зарегистр. 23-07-2008 | Отправлено: 10:10 30-07-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lamener
    http://mediainfo.sourceforge.net/ru/Download

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 10:22 30-07-2008
    MsdLamer

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

    Цитата:
    MsdLamer  
     
    Цитата:А как можно сделать чтобы при запуске бат файла можно было вписывать дату (например: ВПИШИТЕ ДАТУ: 14.05.08) и он бы копировал файлы даты которую я написал, а сели просто нажимаешь Enter тогда копировались бы файлы текущей даты.  
     
     
     
     
    Код:  
    @echo off  
    set "d=%date:~0,2%"  
    set "m=%date:~3,2%"  
    set "y=%date:~6,4%"  
    set /p "given_date=ВПИШИТЕ ДАТУ: "  
    if defined given_date (  
    set "d=%given_date:~0,2%"  
    set "m=%given_date:~3,2%"  
    set "y=%given_date:~6,4%"  
    )  
    xcopy /d:%m%-%d%-%y% \\Post1\c$\CASH\TXT\*.txt C:\Statistic\

     
    он начинает копировать все файлы начиная с той даты и все файлы которые идут после этой даты которой я укажу, а мне нужно чтобы копировались файлы той даты которой я укажу. Подскажите. Спасибо.

    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 10:00 31-07-2008
    lamener

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос !  Нужно разделить одну переменную на вторую и присвоить результат третьей !!
     с=а/б

    Всего записей: 25 | Зарегистр. 23-07-2008 | Отправлено: 14:44 31-07-2008
    Elroir



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

    Код:
     
    set a=6
    set b=2
    set /a c=a/b
     

     
     
    Добавлено:
    Результат является целым числом

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:04 31-07-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    такая задача
     
    set q1=1
    set q2=10
    set q3=100
     
    значения переменных — произвольные числа
     
    то есть возможет вариант
     
    set q1=1
    set q2=100
    set q3=10
     
    set q1=100
    set q2=1
    set q3=10
    ...
    и т.д.
     
    надо определить большую из переменных

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 23:37 31-07-2008
    Elroir



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

    Код:
     
    @echo off
    setlocal
    set "greater=q1"
    set "tmp_var=%q1%"
    if %q2% GTR %tmp_var% (set "greater=q2" & set "tmp_var=%q2%")
    if %q3% GTR %tmp_var% (set "greater=q3")
    echo greatest var = %greater%
     



    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:54 31-07-2008 | Исправлено: Elroir, 00:00 01-08-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    спасибо, работает
     
    Добавлено:
    только после = всё-таки должны быть %%

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 00:42 01-08-2008
    Elroir



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

    Цитата:
    только после = всё-таки должны быть %%

    Где именно?

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:51 01-08-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    set "greater=q1"
    set "greater=q2"
    set "greater=q3"
    ну здесь и т.д. вроде как должно быть set "greater=%q1%"
    по крайней мере без %% у меня не работало

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 00:58 01-08-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Тогда ты неправильно сформулировал вопрос -
    Цитата:
    надо определить большую из переменных

    Не самое большое число, а самую большую переменную - вот мой код и выдает название переменной с самым большим числом.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:04 01-08-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    ессно переменную, спорить не буду
     
    set "greater=%q1%"
    set "tmp_var=%q1%"
    if %q2% gtr %tmp_var% set "greater=%q2%"&set "tmp_var=%q2%"
    if %q3% gtr %tmp_var% set "greater=%q3%"
    echo greatest var = %greater%
     
    вот что мне нужно было
    работает отлично, спасибо

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 01:15 01-08-2008
    lamener

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

    Код:
    set a=6
    set b=2
    set /a c=a/b  
     
    Результат является целым числом  

    А мне нужно дробное !
    Например :
    800/600=1,333333333333333333 и нужно округлить до 1,3  
     
    И еще вопросик батник должен выполняться когда компьютер стоит на блокировке ?
    т.е я ставлю запуск бат файла в менеджер задач на выполнение в определенное время, блокирую комп ! когда снимаю комп с блокировки только тогда у меня начинает работать бат файл ! подскажите это у меня с компом глюк или так и должно быть ?

    Всего записей: 25 | Зарегистр. 23-07-2008 | Отправлено: 07:46 01-08-2008 | Исправлено: lamener, 07:59 01-08-2008
    01MDM



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

    Цитата:
    А мне нужно дробное !
    Например :
    800/600=1,333333333333333333 и нужно округлить до 1,3  

     
    При помощи clcc.exe

    Код:
     
    @echo off
    set eval=800/600
    for /f "tokens=2" %%i in ('clcc %eval%') do set result=%%i
    set result=%result:~0,3%
    echo %result%  
     

     
     
    Добавлено:
    clcc добавил в шапку в "Полезные утилиты"

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:47 01-08-2008 | Исправлено: 01MDM, 09:50 01-08-2008
    lamener

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я наверно уже достал всех своими вопросами !! Ну уважаемые без вашей помощи никак не получатся !! Мне нужно огранизовать паузу !! Нашел тут на форуме скрипт от Smitis,  а он у меня не работает !!  

    Код:
    @set @x=0 /* Это строка должна быть первой. Далее идёт основной текст командного файла
    @echo off
     :: Сдесь что-то делаем до паузы
    :: Сдесь делаем паузу, для примера, 10 секунд (10000 миллисекунд)
    cscript //nologo /e:jscript "%~f0" 10000
    :: Сдесь продолжение текста командного файла
    :: В нём опять могут быть паузы, например, пол секунды
    cscript //nologo /e:jscript "%~f0" 500
    :: И ещё что-нибудь
    :: Следующая строка должна быть последней
    goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0))  

    Может кто подскажет !! что внем неправильно !! А может можно как нибудь по другому организовать ?

    Код:
     
    @set @x=0
    :1
       type "C:\Documents and Settings\Valera\Application Data\Macromedia\Flash 8 Video Encoder\log.txt" | find "QUEUE STOPPED">nul
        if not errorlevel 1 (
        TASKKILL /F /IM "Flash 8 Video Encoder.exe"
           ) else (
        cscript //nologo /e:jscript "%~f0" 10000
        goto 1
            )
    goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0))  
     
     
     
    ошибку выдает имено пауза !
     
    Ура, сам нашел ошибку !! Всё работает !!  
    Код:
    @set @x=0 /*
    вот так оказывается должно быть !

    Всего записей: 25 | Зарегистр. 23-07-2008 | Отправлено: 10:28 01-08-2008 | Исправлено: lamener, 10:43 01-08-2008
    RMR

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lamener Для паузы юзай ping>nul 127.0.0.1 -n 6, где -n кол-во секунд +1

    Всего записей: 32 | Зарегистр. 23-11-2006 | Отправлено: 10:49 01-08-2008
    lamener

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ !! Подскажите куда прописывать всякий дополнительный софт, что б можно было без пути им пользоваться !!

    Всего записей: 25 | Зарегистр. 23-07-2008 | Отправлено: 12:32 01-08-2008
    01MDM



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

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

     
    Клади в системную переменную %PATH%. Или создай свою (пользовательскую) переменную %PATH%
     
    Реестр: HKEY_CURRENT_USER\Environment, в которой пропишешь пути к папкам, из которых будут исполняться файлы без полных путей
     
    set path покажет синтаксис  
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:58 01-08-2008 | Исправлено: 01MDM, 12:59 01-08-2008
    RMR

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

    Код:
    @echo off
    cd %~dp0
    set ext="*.cmd" "*.jpg" "*.gif" "*.png" "*.tiff" "*.bmp"
    dir %ext% /o:d /t:c /s >temp.dat
    for %%i in (%ext%) do (
    for /F "tokens=1 delims= " %%j in ('find "%%~nxi" "temp.dat"') do echo %%i %%j
    )
    pause

    выдает такой результат:

    Код:
    copy by date.cmd ----------
    copy by date.cmd 01.08.2008
    pic030703.jpg ----------
    pic030703.jpg 17.08.2006
    pic030715.jpg ----------
    pic030715.jpg 17.08.2006


    Всего записей: 32 | Зарегистр. 23-11-2006 | Отправлено: 13:18 01-08-2008 | Исправлено: RMR, 13:19 01-08-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru