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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    root1976

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    [q][/q]
    Огромное спасибо!!!!
    Очень помогли!!!!

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите написать скрипт.
    каждый день на 150 машинах запускается программа, которая делает отчет с именем сегодняшняядата_имякомпа.txt. надо написать скрипт, чтобы программа не запускалась, если отчет от этого компьютера уже делался на этой неделе. то есть если есть файл с именем (вчерашняядата/позавчерашняя/позапозавчерашняя..... )_имякомпа.тхт

    Всего записей: 1 | Зарегистр. 02-11-2007 | Отправлено: 10:33 02-11-2007
    KapralBel



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

    Код:
    @Echo Off
    Echo wscript.echo DatePart("WW",now()) >tmp.vbs
    For /F %%a in ('tmp.vbs') Do Set ww=%%a
    Set /A ww1=ww-1
    Del tmp.vbs /q>Nul
    Echo. >C:\%ww1%.flg
    Attrib -h C:\%ww1%.flg>Nul
    Del C:\%ww1%.flg /q/f >Nul
    If Exist C:\%ww%.flg GoTo :working
    Echo. >C:\%ww%.flg
    Attrib +h C:\%ww%.flg
     
    Echo Запуск нужной программы
    GoTo :EOF
     
    :Working
    Echo Утилита на этой неделе уже работала
    GoTo :EOF

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:07 02-11-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Очередная задача:
    По FTP захожу на сайт в Total Commander-е, вижу папки и файлы.
    Нужно узнать размер папок и суммарный размер всех папок и файлов каталога в котором я нахожусь.
    Можно ли это сделать и как?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 11:17 02-11-2007
    whitecherep

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Несколько задач, можно в одном батнике, а можно и на каждую отдельно.
     
    1. Нужен батник, который бы сканировал и удалял без возврата и без подтверждения все mp3 на диске, длинее 8:30 (Длительность композиции).
     
    2. Нужен батник, который бы сканировал и удалял без возврата и без подтверждения  все пустые папки на диске
     
    3. Нужен батник, который бы сканировал и удалял без возврата и без подтверждения  все jpg, txt, gif и другие заданные в батнике файлы.
     
     
    Удаление пускай проводится на диске, на котором находится батник, или начиная с каталога в котором он находится.
    Если можно поподробнее пожалуйста (в этом деле новичок). Поиском пользовался, но просто не реально найти среди более 300 страниц решенную, подходящую тебе задачу.
     
    Заранее благодарен

    Всего записей: 38 | Зарегистр. 14-02-2006 | Отправлено: 15:29 03-11-2007 | Исправлено: whitecherep, 15:32 03-11-2007
    yurkesha



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

    Код:
    @echo off
    FOR /r %%i IN (*.txt *.jpg *.gif) DO del /q /f "%%i"

     


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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 15:54 03-11-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    whitecherep
     
    1.
    Цитата:
     удалял без возврата и без подтверждения все mp3 на диске, длинее 8:30 (Длительность композиции)

    Если есть консольная утилита определяющая продолжительность звучания mp3 файла, то утилиту в студию, поможем прикрутить к батнику
     
    2.
    Цитата:
    удалял без возврата и без подтверждения  все пустые папки на диске

    Вариант №1 - красивый

    Код:
     
    @echo off
    chcp 1251> nul
     
    for /f "tokens=1 delims=" %%d in ('dir /s /b /a:d c:\') do call :Empty "%%d"
    pause
    goto :eof
     
    :Empty
    set empty=
    dir %1 /a | find " 2 папок" > nul && set empty=true
    dir %1 /a | find " 0 файлов" > nul || set empty=false
    if "%empty%"=="true" rd /s /q %1
     

     
    Вариант №2 - простой

    Код:
     
    @echo off
    for /r c:\ %%a in (.) do rd "%%a"> nul 2>&1
     

     
    3.
    Цитата:
    сканировал и удалял без возврата и без подтверждения  все jpg, txt, gif


    Код:
     
    @echo off
    for /r c:\ %%a in (*.txt *.jpg *.gif) do del /f /q /a:h "%%a"
     

     

    Цитата:
    Если можно поподробнее пожалуйста

    C:\WINDOWS\Help\ntcmds.chm там всё есть, а хитрости и тонкости в топике.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 16:25 03-11-2007 | Исправлено: Maza Faka, 16:27 03-11-2007
    Elroir



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

    Цитата:
    Вариант №1 - красивый  
    Вариант №2 - простой

    Я могу ошибаться, но в обоих вариантах недочет - если в пустой (от файлов) директории, есть такая же пустая поддериктория (или ветка пустых поддиректорий), то оба варианта удалят эту поддиректорию (или самую последнюю в ветке), а саму директорию не удалят.
    И "dir /s" и "for /r" идут по файловой системе сверху вниз (вглубь), а в данном случае нужно идти снизу вверх.
    Правда whitecherep не уточнил, что делать в случае подобной структуры директорий

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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    а тебе не кажется что в
    Код:
    @echo off  
    for /r c:\ %%a in (*.txt *.jpg *.gif) do del /f /q /a:h "%%a"
    /a:h является лишним? Попробуй удалить нескрытый файл...
     
    Добавлено:
    Вот другое дело что можно вообще обойтись без цикла:
    Код:
    del /s /f /q *.jpg
    правда только по одному типу файлов за раз...

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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 17:13 03-11-2007 | Исправлено: yurkesha, 17:24 03-11-2007
    01MDM



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

    Цитата:
    консольная утилита определяющая продолжительность звучания mp3 файла

     
    Неплохая утилита для редактирования тегов, определяет время звучания в т.ч
    http://www.synthetic-soul.co.uk/files/tag_2.0.52.zip
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:52 03-11-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    whitecherep
    В общем с локальным диском (40гб данных) вылетел, с каталогом D:\Music (4.5гб) справился за 3 минуты. Так же могут быть проблемы если длительность звучания больше часа.  

    Код:
     
    @ECHO OFF
     
    cd.>list.txt
     
    tag "d:\Music" --recursive --tofilen list.txt
     
    echo. >file.txt
    echo. >len.txt
     
    for /f "delims=" %%i in ('type list.txt ^| findstr /i ".mp3"') do (echo %%i >>file.txt)
    for /f "tokens=8" %%i in ('type list.txt ^| findstr "playtime"') do (
        set "len=%%i"
        call:len1
    )
    set /a count=1
    :next
    for /f "skip=%count% delims=" %%i in ('type file.txt') do (
        set "file=%%i"
        for /f "skip=%count%" %%i in ('type len.txt') do (
            set "len=%%i"
            call:len2  
            set /a count+=1
            goto:next
        )
    )
     
    del /q len.txt
    del /q file.txt
    del /q list.txt
     
    goto:eof
     
    :len1
    if %len:~0,1% equ 0 set len=%len:~1%
    echo %len% >>len.txt
    goto:eof
     
    :len2
    if %len::=% geq 830 (echo "%file%" >>res.txt)  
     
     
     
    Сначала просмотри файл res.txt. Если все путем замени последнюю строчку в коде на
    if %len::=% geq 830 (del /q "%file%")

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:28 03-11-2007 | Исправлено: 01MDM, 20:45 03-11-2007
    Nagual



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

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 03:32 04-11-2007
    Maza Faka



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

    Цитата:
    /a:h является лишним? Попробуй удалить нескрытый файл

    Да ты прав, я поторопился, не проверил несколько раз.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:00 04-11-2007
    tommak

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет. Нужен батник который: Находит на диске файл самого большого размера и  изменяет его аттрибут на "Скрытый"

    Всего записей: 5 | Зарегистр. 04-11-2007 | Отправлено: 13:37 04-11-2007 | Исправлено: tommak, 13:40 04-11-2007
    AlessTO

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    "tag не является командой или исполняемым файлом."
    Значит ли это что необходимо иметь в каталоге тулзу?

    Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 14:43 04-11-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlessTO
    помести батник в каталог с тулзой или в батнике пропиши путь к ней. Или положи тулзу куда-нибудь в %PATH%.
    набери команду set path и посмотри.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:10 04-11-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tommak
    Помести батник в корень диска. Если в именах файлов есть воскл. знаки, этот батник не годится.

    Код:
    @echo off
    setlocal enabledelayedexpansion
    for /r %%e in (.) do call :wer "%%e"
    ATTRIB +H "!big_file!"
    goto :eof
    :wer
    for /f "tokens=*" %%c in ('dir %1 /b /O:-s /s /a:-d') do (
        if %%~zc GTR !size! (
            set big_file=%%c
            set size=%%~zc
        )
        goto werty
    )
    :werty

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:18 04-11-2007
    tommak

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

    Всего записей: 5 | Зарегистр. 04-11-2007 | Отправлено: 15:52 04-11-2007
    01MDM



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    set size=0
    for /f "delims=" %%i in ('dir /b /s D:\') do (
            if %%~zi geq !size! set "file=%%~fi" && set size=%%~zi
    )
    attrib +h "%file%"
     


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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    И в том и в другом коде все будет нормально, пока не найдется файл больше чем 2147483647 байт. В этом случае, ответ будет неверным.
    Возможным решением будет разделять оба сравниваемых числа на первые 9 символов (справа налево) и оставшиеся и сравнивать поочередно обе части.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:43 04-11-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 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru