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

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Просмотрел все четыре части темы, но ответа не нашел.
    Чем можно запаковать несколько тысяч файлов, расположенных во множестве подкаталогов?
    То есть сами каталоги не паковать, только файлы, рекурсивно, имя архива равно имени файла.
    Нечто вроде этого:
    rar a -r test.rar *.*
    Но здесь пакуется в один архив, а мне требуется в отдельный для каждого файла, причем архив должен лежать в том же подкаталоге, где архивируемый файл.
    Не нашел я у консольного winrar ключа "каждый файл в отдельный архив"..

    Всего записей: 207 | Зарегистр. 06-08-2003 | Отправлено: 07:15 17-10-2007
    AndryG

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    "Почти решение" Вашей задачи не раз появлялось на этих страницах ...  
    нужно рекурсивно обходить дерево каталогов (именно эта часть много раз упоминается)
    и для каждого найденного файла запускать архиватор.
     
    А можно запихнуть все-все файлы с путями в один архив, а потом их оттуда по одному вытаскивать батником и ложить в свой
     
    Добавлено:
    Например вот задачка
    http://forum.ru-board.com/topic.cgi?forum=62&topic=6156#3
    И ответ ... http://forum.ru-board.com/topic.cgi?forum=62&topic=6156#13

    Всего записей: 26 | Зарегистр. 07-09-2007 | Отправлено: 09:10 17-10-2007 | Исправлено: AndryG, 10:14 17-10-2007
    c0yc



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возникли 2 задачки:
     
    1.Необходимо что бы при втсавлении влешки в компьютер - флешка форматировалась (на кройняк что бы просто не работала)
     
    2.Поиск по определенной категории файла\папки с заданной маской.(что бы все проходило на автомате) и происходило удаление
     
    Заранее спасибо

    Всего записей: 6 | Зарегистр. 01-10-2007 | Отправлено: 10:05 17-10-2007 | Исправлено: c0yc, 10:09 17-10-2007
    AndryG

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    to Varset
    ... Освободился ... пробовал на тестовом деревце - получилось ...

    Код:
     
    @echo off
    rem Архиватор лежит возле батника
    set path=%path%;%~dp0
    rem "Обнуляем" лог
    echo START %TIME%>%~dpn0.log
    echo Please wait...
    for /r %%d in (.) do (
        cd %%d
        for %%f in (*.*) do (
          if /i not %%~xf==.rar (
            call rar.exe a "%%~nf" "%%f" >nul
            echo "%%~nf" "%%f" >>%~dpn0.log
          )
        )
    )  
     

    Как тут на форуме говорят.. не забудьте удалить пробелы в конце строк после копирования с форума.
    Строку
    Код:
     
    set path=%path%;%~dp0
     

    я добавил ... ибо у меня RAR.EXE не прописан в PATH ... если у Вас прописан, то можете ее удалить.
    Лог (список обработанных файлов) я добавлял для себя ... не нужно - тоже удаляйте строки с окончанием .log
    И небольшая ложка дегтя ... исполнительный батник создает архив и с своим кодом
    Урезанный вариант будет выглядеть так:

    Код:
     
    @echo off
    echo Please wait...
    for /r %%d in (.) do (
        cd %%d
        for %%f in (*.*) do (
          if /i not %%~xf==.rar rar.exe a "%%~nf" "%%f" >nul
        )
    )  
     

    Всего записей: 26 | Зарегистр. 07-09-2007 | Отправлено: 10:09 17-10-2007 | Исправлено: AndryG, 10:10 17-10-2007
    Maza Faka



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

    Код:
     
    @ECHO OFF
    FOR /R C:\WORK %%A IN (*.*) DO RAR A -M5 -EP "%%~DPA\%%~NXA.RAR" "%%A"
     

    Каталог заменишь на нужный тебе.
     
    Добавлено:
    c0yc

    Цитата:
    Возникли 2 задачки

     
    2. Рекурсивно ищем и удаляем файлы и каталоги в названии которых имеется сочетание "ARC"

    Код:
     
    @ECHO OFF
    FOR /F "DELIMS=" %%A IN ('DIR C:\*ARC*.* /S /A') DO DEL /F /Q "%%A"
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:21 17-10-2007 | Исправлено: Maza Faka, 10:37 17-10-2007
    Nagual



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

    Цитата:
    Varset  
    Пример:  
     
    Код:  
    @ECHO OFF  
    FOR /R C:\WORK %%A IN (*.*) DO RAR A -M5 -EP "%%~DPA\%%~NXA.RAR" "%%A"

    потестировал твой код
    проблемы с рекурсией в твоем коде возникают
    список файлов упакованных в тестовой папке FAR
    7-ZipEng.hlf.RAR
    7-ZipEng.hlf.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
    7-ZipEng.hlf.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR.RAR
     
    код AndryG работает отлично
     
     
    Добавлено:
    нет, код AndryG тоже не идеален
    если имена у файлов одинаковы и расширения разные, то они будут паковаться в один архив, что не соответствует поставленной задаче
     
     
    Добавлено:

    Код:
    @echo off
    echo Please wait...
    for /r %%d in (.) do (
        cd %%d
        for %%f in (*.*) do (
          if /i not %%~xf==.rar rar u "%%~f.rar" "%%f">nul
        )
    )

    так будет корректнее

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 11:11 17-10-2007 | Исправлено: Nagual, 11:36 17-10-2007
    AndryG

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я как-раз сделал по поставленной задаче это постановка страдает ...
     
    Вот вариант .. имя архива будет состоять из имени файла и расширения ...
    Подправьте строку .. один парочку символов

    Код:
     
       call rar.exe a "%%~nxf.rar" "%%f" >nul
     

    так имя архива будет состоять из имени и расширения файла
    например  
     1.doc
     1.txt
     будут архивы  
     1.txt.rar
     1.doc.rar

    Всего записей: 26 | Зарегистр. 07-09-2007 | Отправлено: 11:41 17-10-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Nagual
    Я писал батник для однократного применения, так, как в условиях задачи не было указанно обратного. Учитывая это немного исправил код:

    Код:
     
    @ECHO OFF
     
    FOR /F "DELIMS=" %%A IN ('DIR C:\TEMP /B /S /A:-D ^| FINDSTR /I /V ".RAR\>"') DO (
    IF NOT EXIST "%%A.RAR" RAR A -M5 -EP "%%~DPA\%%~NXA.RAR" "%%A"
    )
     

    Вроде работает

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:45 17-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    а это \> зачем?

    Код:
    for /f "delims=" %%a in ('dir/b/s/a:-d^|findstr/i/v ".rar"') do if not exist "%%a.rar" rar u -m5 -ep "%%~a.rar" "%%a"
    так тоже работает

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 13:12 17-10-2007 | Исправлено: Nagual, 13:15 17-10-2007
    Maza Faka



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

    Цитата:
    а это \> зачем?

    Это регулярное выражение, означающее
    Цитата:
    Позиция слова: конец слова
    , я его применил не к месту .
     

    Цитата:
    так тоже работает

    Ага, вот только представь , что у нас в каталоге имеется файл, например с таким названием: MY.RAR.TEST.TXT и он естественно попадёт под фильтр и не будет обработан, поэтому вот окончательный[?] вариант:

    Код:
     
    @ECHO OFF
     
    FOR /F "DELIMS=" %%A IN ('DIR C:\TEMP /B /S /A:-D ^| FINDSTR /I /V ".RAR$"') DO (
    IF NOT EXIST "%%A.RAR" RAR A -M5 -EP "%%~DPA\%%~NXA.RAR" "%%A"
    )
     


    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:27 17-10-2007
    popalka



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Что означает конструкция в bat-файле:
    set JAVA_HOME=$C(COMMON, BUNDLED_JAVA_HOME)
     
    непонятно, что такое $C(...,...)
     

    Всего записей: 70 | Зарегистр. 25-06-2004 | Отправлено: 14:52 17-10-2007 | Исправлено: popalka, 14:52 17-10-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    popalka
    Объявляется переменная окружения JAVA_HOMЕ и какая-то программа (Джава скорее всего) её обрабатывает
    А смысл значения только в документации к этой программе

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    согласен, обрабатывать надо, хоть и вероятность этого весьма мала
    вариант для закидывания в текущий каталог, удобен тем, что нет необходимости постоянно править путь
    достаточно скопировать в обрабатываемую папку и там запустить
    Код:
    for /f "delims=" %%a in ('dir/b/s/a:-d^|findstr/i/v ".rar$"') do if not exist "%%a.rar" rar u -m5 -ep "%%~a.rar" "%%a" &del/q "%0.rar"

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:56 18-10-2007
    hhr

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

    Всего записей: 289 | Зарегистр. 20-03-2005 | Отправлено: 14:30 18-10-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    hhr
    subinacl.exe /help
     
    download

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:56 18-10-2007 | Исправлено: KapralBel, 16:17 18-10-2007
    cluster

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

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 20:45 18-10-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cluster
    http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=400
    2 пост, можно переделать под себя

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:13 18-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    cluster
    тырк
    ключик /pb заставит отображаться прогресс бар на файлах >=1M
    а вообще

    Код:
    xxcopy/help|findstr/i "bar"
    в помощь )

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 00:03 19-10-2007 | Исправлено: Nagual, 01:20 19-10-2007
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    king_stiven
    Оо, благодарю. Вариант от king_stiven мне больше понравился.

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 02:00 19-10-2007
    diaminru

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    как из батника заставить интернет эксплорер найти на открытой странице определенную ссылку по ее текстовому обозначению на странице и перейти по этой ссылке??
    или если не перейти, то получить ссылку которая находится под определенным текстом...

    Всего записей: 91 | Зарегистр. 22-02-2007 | Отправлено: 09:14 19-10-2007 | Исправлено: diaminru, 09:16 19-10-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