Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - bat-скрипт для массового копирования файлов

Ответить
Настройки темы
CMD/BAT - bat-скрипт для массового копирования файлов
akt akt вне форума

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уважаемые гуру!

Прошу помощи в написании bat-скрипта для массового копирования файлов.

Нужно:
- в одной директории находить все файлы с расширением *.txt, созданные за прошлый месяц;
- перемещать их в отдельную папку;
- в текстовый файл выводить информацию об их количестве и суммарном объёме;
- в другой (или этот же, неважно) файл выводить информацию о количестве и суммарном объёме файлов со строкой «строка 1»;
- в другой (или этот же, неважно) файл выводить информацию о количестве и суммарном объёме файлов со строкой «строка 2»;
- запускать WinRAR на архивацию всех найденных и перемещённых файлов за прошлый месяц с максимальным сжатием;
- удалять исходные файлы после архивации файлы;

Премного благодарен за ответы!

Отправлено: 22:51, 01-05-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Ну, точно задание. По скольким форумам ещё разослали?

Отправлено: 00:50, 02-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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

akt akt вне форума Автор темы

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


А что, это разве нарушение правил форума? Или вы уверены, что знающие люди посещают исключительно этот форум и других форумов не существует?
Буду признателен за ответ по существу от настоящих программистов, а не от любителей зубоскальства.

Вот, что пока удалось сделать самому:

Перемещение всех файлов по дате:
Код: Выделить весь код
forfiles /M *.txt /D -1 /C "cmd /c move @file c:\123"
Не очень, конечно, изящно, но учитывая что скрипт будет запускаться по первым числам, конструкция /D -1 вполне годна.

Перемещение файлов, содержащих нужную строку:
Код: Выделить весь код
@echo of
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('findstr /M "строка 1" *.txt') do (move "%%a" c:\123)
Опять же не очень изящно перемещать для подсчёта файлы туда-сюда по папкам, но толковее пока среди инструментария bat ничего не нашёл.
Полагаюсь на знание специалистов, надеюсь, что такие здесь всё же есть.

Отправлено: 09:34, 02-05-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата akt:
А что, это разве нарушение правил форума? Или вы уверены, что знающие люди посещают исключительно этот форум и других форумов не существует?
Буду признателен за ответ по существу от настоящих программистов, а не от любителей зубоскальства. »
Само размещение — нет, никоим образом не нарушение. Дело в ином:
читать дальше »
бывает так, что приходят новые люди с заданием, и зараз начинается канюченье: люди добрые, помогите кто чем может, сами мы не местные препод идиот/мудак/ещё эпитеты, материал вообще не давался, сдавать лабораторку, практикум, etc надо было уже вчера. И никаких своих мыслей, никаких даже попыток разобраться. А то ещё интереснее: «срочно», «если тебе нечего сказать по делу — заткнись», «буду признателен за ответ по существу от настоящих программистов, а не от любителей зубоскальства» и т.п.

По существу — см. правила подраздела: Правила Форума, п.6. Вызвано сие не тем, что люди такие злые, а тем, что «да воздастся каждому по делам его» — поощрять халявщиков грех. Ну, и толку будет от такой помощи — ноль.

P.S. Полагаю, к Вам теперь сие не относится, поскольку:
Цитата akt:
Вот, что пока удалось сделать самому: »


Цитата akt:
учитывая что скрипт будет запускаться по первым числам, конструкция /D -1 вполне годна. »
Отчего сей факт был опущен в изначальном техзадании?! Не есть хорошо.


Цитата akt:
Перемещение всех файлов по дате:
Код: Выделить весь код
forfiles /M *.txt /D -1 /C "cmd /c move @file c:\123"
Не очень, конечно, изящно, но учитывая что скрипт будет запускаться по первым числам, конструкция /D -1 вполне годна. »
Не годна. Вы отбираете все файлы, имеющие дату модификации (а не дату создания, как в ТЗ) более раннюю, нежели сегодня — т.е. от начала времён и до вчера включительно. Строго говоря, «forfiles.exe» не годится для задания закрытого интервала — он позволяет задать только полуоткрытый (в любую сторону) интервал.

Вычисление и указание интервала дат прошлого месяца с первого числа по последнее Вам проделают более опытные коллеги — у меня аллергия на вычисление дат в пакетных файлах, предпочитаю LogParser, WSH или PowerShell.

Цитата akt:
в текстовый файл выводить информацию об их количестве и суммарном объёме »
Количество:
Код: Выделить весь код
dir /b "c:\123\*.txt" | find.exe /v "" /c>>"Out.txt"
Объём:
Код: Выделить весь код
for /f "usebackq tokens=3" %%i in (`dir "c:\123\*.txt" ^| find.exe "байт" ^| find.exe "файлов"`) do echo %%i>>"Out.txt"
и т.п.

Повторюсь, корректно отобрать файлы с помощью одного только «forfiles.exe» не удастся. Переходите на WSH или PoSH (примерный код Вам набросали в другом месте).
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:26, 02-05-2013 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - bat-скрипт для массового копирования файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Скрипт для копирования файлов/папок с заменой darkAge Скриптовые языки администрирования Windows 19 01-07-2013 18:06
CMD/BAT - Скрипт копирования файлов и папок в сети в дерикторию пользователей DNKolian Скриптовые языки администрирования Windows 2 18-02-2013 10:52
Скрипт поиска и копирования файлов в папку. Как реализовать? Pozia AutoIt 5 31-03-2012 18:47
Прочие - Программы для массового переименования каталогов и файлов Daiv Программное обеспечение Windows 39 17-06-2011 16:33
Скрипт для копирования файлов с 1 сервера на несколько andro_id Программирование в *nix 2 04-09-2008 11:48




 
Переход