Архивирование файлов в каталоге
Здравствуйте.
Есть необходимость архивировать все файлы (кроме уже существующих архивов) в исходном каталоге. Имя архива должно полностью повторять имя файла за исключением расширения. Скрипт должен работать только в определённый промежуток времени (ночью). При создании архива исходный файл должен удаляться. Также нужно вести логи всего происходящего. Не желательно обращаться к WinRar т.к. это программа платная, а на работе с этим строго. Есть опыт написание BAT-ников, и VBS-скриптов, но только исходя из готовых примеров. Хотелось бы чтобы вы дали какие нибудь полезные ссылочки или учебники где всё подробно объясняется. Буду очень признателен |
Код:
@Echo Off Лог будет дописываться при каждом запуске. Если в исходной папке будут несколько файлов с одинаковым именем, но разным расширением, то они будут упакованы в один архив. Этого можно избежать, если присваивать имя архиву равное имени и расширению исходного файла. В постановке задачи это не оговорено. Архив можно создавать не 7z, а zip, для этого нужно просто заменить в скрипте расширение. Запускать скрипт через планировщик. Исходная папка и папка назначения могут быть и одной папкой |
Цитата:
Код:
@Echo Off Цитата:
Цитата:
Цитата:
Опоздал...:) |
El Sanchez, архивы 7z он не заархивирует повторно, а удалить их ему ни кто не помешает. ;)
|
gora, спасибо. Отпуск расхолаживает. Пост исправлен.
|
Зпуск в планировщике это конечно хорошо но
Цитата:
gora, скрипт работает. Спасибо.... но он только и файл логов архивирует и сам файл скрипта если он лежит в папке :) |
Цитата:
1 Вынесите скрипт из папки (лог создается рядом со скриптом) 2 Добавьте расширения скрипта и лога (у лога оно может быть произвольным) в строку Код:
Set ext=7z zip rar bat txt Цитата:
Тогда укажите временнЫе границы работы скрипта. |
Для начала я бы провёл организационные мероприятия. Все архивы поместил бы в отдельную папку. Очень неплохо, чтобы там батник делал подпапки с именем, содержащим год и месяц (и, может быть, день), в которые бы архивы создавались - зачем нужны архивы за неопределённый период. Туда бы записывал лог. В принципе, и батник можно поместить туда же. И, прежде чем удалять исходный файл, я бы убедился, что архив существует (а вдруг место на диске исчерпалось, а файлы будем удалять ...). И, кроме того, я бы застраховался от того, что два файла имеют одинаковые имена, но разные расширения, так как такие файлы обычно архиватором архивируются с одинаковыми именами-расширениями и, в лучшем случае, получим архив с несколькими файлами с одинаковыми именами и разными расширениями. А просили заархивировать каждый файл отдельно.
Код:
Set Source=D:\Source Arch - где архивы ExtArc - расширение, с которым создаётся архив LogFile - куда пишется лог-файл PgmArc - где архиватор (я делал для 7Z) Например, файл D:\Source\траляля.exe будет заархивирован в файл D:\Source\Arch\20100909\траляля.exe.7Z и если файл D:\Source\Arch\20100909\траляля.exe.7Z существует, то удалим D:\Source\траляля.exe Батник помещаем в назначенные задания, где укажем время его выполнения. Можно при желании сделать в лог файле выдачу размера каждого файла до и после архивации. |
megaloman, Вот ОНО!!! Благодарю :)
|
Как можно упаковать каталог с файлами через lzma? Не просто каталог а именно каждую файл отдельно в свою каталог упаковать и удалить упакованный файл. Например, C:\temp\*.* там есть:
Код:
C:\temp\file.exe Код:
C:\temp\file.exe.lzma Код:
C:\temp\file.exe.lzma |
Добрый день!!!
В данных рассуждениях идёт речь об архивации файлов в определённой папке.Всё работает,спасибо. Но вот вопрос,как переделать код для задачи архивации файлов и папок с вложенными файлов,хранящихся в одной папке. То есть у меня есть папка допустим D:/Source,а в свою очередь в этой папке есть и файлы и папки в которых хранятся файлы. И также стоит задача архивировать все данные в один файл. За ранее благодарен |
Цитирую:
Цитата:
|
Цитирую:
Цитата 7-Zip Command Line Version User's Guide: a (Add) command Adds files to archive. … Switches that can be used with this command … -r (Recurse) … Это к моему вопросу? |
|
Нет не пробовал.Честно говоря не пойму куда этот код вставлять-имеется ввиду после как строчек
|
предложу метод на powershell вот он
|
Цитата:
|
Вот исходник,он в принципе такой же как здесь приводят в пример,единственное он не удаляет файлы которые берёт для архивирования.
Где здесь нужно поставить -r(.......) ???? Set Source=D:\Ser\Source Set Arch=D:\Ser\Arch Set ExtArc=7Z Set LogFile=D:\Ser\Log\{Archives.log Set PgmArc="C:\Program Files\7-Zip\7z.exe" Set DirDay=%Arch%\%Date:~6,4%%Date:~3,2%%Date:~0,2% md "%DirDay%" FOR %%i IN ("%Source%\*.*") DO Call :Arhivator "%%i" GoTo :Eof :Arhivator Set N=%DirDay%\%~nx1.%ExtArc% %PgmArc% a "%N%" %1 If Exist "%N%" ( Echo %Date% %Time% %N% >>%LogFile% ) |
kmc, тогда сначала словами опишите, что Вам нужно.
|
На данном форуме,приведён пример программирования bat файла,где реализуется след. задача:
Происходит архивирование файлов,находящихся по указонному пути Set Source=D:\Ser\Source ,причём архивация идёт каждого файла в одну папку-на заархивированнной папке указывается дата архивации.Но у меня задача немного другая,мне требуется заархивировать также не только файлы находящиеся по указанному пути но папки и вложения в них(любые,как и папки и файлы). Вот код который реализуется архивацию файлов,без папок и вложения.Смысл в том чтобы происходила архивация всего что находится в Source(папки,вложения в папки и т.д. -всё!!!) в один файл. Set Source=D:\Ser\Source Set Arch=D:\Ser\Arch Set ExtArc=7Z Set LogFile=D:\Ser\Log\{Archives.log Set PgmArc="C:\Program Files\7-Zip\7z.exe" Set DirDay=%Arch%\%Date:~6,4%%Date:~3,2%%Date:~0,2% md "%DirDay%" FOR %%i IN ("%Source%\*.*") DO Call :Arhivator "%%i" GoTo :Eof :Arhivator Set N=%DirDay%\%~nx1.%ExtArc% %PgmArc% a "%N%" %1 If Exist "%N%" ( Echo %Date% %Time% %N% >>%LogFile% ) |
kmc, уточним: Вам нужно архивировать всё содержимое одной папки (например, «D:\Ser\Source»), включая все вложенные папки и файлы, в один архив, который нужно помещать в некую папку (например, «D:\Ser\Arch») в создаваемую подпапку с именем, основанным на текущей дате (например, «…%Date:~6,4%%Date:~3,2%%Date:~0,2%»)?
P.S. Код на форуме оформляется тэгом «code». |
Iska, Совершенно верно.
|
Подскажите пожалуйста у меня похожая задача, но есть небольшая разница, требуется: архивировать директорию с вложеными папками и кучей файлов, чтобы каждый файл получался как отдельный архив с сохранением структуры папок.
я взял скрипт от gora, слегка изменил: @Echo Off ChCp 1251>Nul SetLocal EnableDelayedExpansion Set src=F:\users_backup\dv\src Set arch=F:\users_backup\dv\temp Set ar7z=C:\Program Files\7-Zip\7z.exe (For /R "%src%" %%a In (*.*) Do ( "%ar7z%" a "%arch%%%~pa%%~na.7z" `%%a`>Nul Echo !Date! !Time! Файл "%%a" заархивирован в "%arch%%%~pa%%~na.7z" Del /F/Q "%%a">Nul Echo !Date! !Time! Исходный файл %%a удален ) )>>log.txt Всё работает, но есть косяк, с обработкой файлов содержащих в названии спецсимволы, как можно это обойти и обрабатывать их нормально? |
Цитата:
Код:
@Echo Off |
amel27, большое спасибо всё работает
|
Iska,хочу также уточнить,чтобы структура папок оставалось той же
|
kmc, выбирайте вариант:
Код:
@Echo Off |
gora,Спасибо.
Я адаптирую под данный код Ваш пример ,получается "%PgmArc%" a "%Arch%\with_folder_%Date:~6,4%%Date:~3,2%%Date:~0,2%.7z" "%Source%" >Nul и что-то никак не пойму куда закодить, туда куда вроде бы надо он не архивыриует,создаёт только папку,понятное дело что не там прописываю. Set Source=D:\Ser\Source Set Arch=D:\Ser\Arch Set ExtArc=7Z Set LogFile=D:\Ser\Log\{Archives.log Set PgmArc="C:\Program Files\7-Zip\7z.exe" Set DirDay=%Arch%\%Date:~6,4%%Date:~3,2%%Date:~0,2% md "%DirDay%" FOR %%i IN ("%Source%\*.*") DO Call :Arhivator "%%i" GoTo :Eof :Arhivator Set N=%DirDay%\%~nx1.%ExtArc% %PgmArc% a "%N%" %1 If Exist "%N%" ( Echo %Date% %Time% %N% >>%LogFile% ) |
gora,Спасибо.
Я адаптирую под данный код Ваш пример ,получается "%PgmArc%" a "%Arch%\with_folder_%Date:~6,4%%Date:~3,2%%Date:~0,2%.7z" "%Source%" >Nul и что-то никак не пойму куда закодить, туда куда вроде бы надо он не архивыриует,создаёт только папку,понятное дело что не там прописываю. Set Source=D:\Ser\Source Set Arch=D:\Ser\Arch Set ExtArc=7Z Set LogFile=D:\Ser\Log\{Archives.log Set PgmArc="C:\Program Files\7-Zip\7z.exe" Set DirDay=%Arch%\%Date:~6,4%%Date:~3,2%%Date:~0,2% md "%DirDay%" FOR %%i IN ("%Source%\*.*") DO Call :Arhivator "%%i" GoTo :Eof :Arhivator Set N=%DirDay%\%~nx1.%ExtArc% %PgmArc% a "%N%" %1 If Exist "%N%" ( Echo %Date% %Time% %N% >>%LogFile% ) |
Необходимо создать 7z sfx ( или rar sfx ) содержимого папки с подпапками с запуском батника из самой папки. Сам батник должен быть в архиве. Исходную папку очистить. Архив создать в корне диска С.
Такое возможно? п.с. Чтобы сам батник не был занят системой и попал в архив, может быть всё скопировать в временную папку для дальнейшей архивации? |
Имя екзешника=имени батника. Екзешник с архивом в самой папке
Код:
@Echo off Код:
@Echo off Код:
@Echo Off |
Как сделать, чтобы сама папка, в которой батник не архивировались, а архивировались в sfx только её содержимое с подпапками? Как добавить комментарий и значёк иконки?
|
Цитата:
Код:
@Echo off |
Вопрос добавления комментария к rar sfx решен. Информация взята отсюда
Код:
@Echo off отправил запрос в службу поддержки RAR |
Цитата:
Код:
ResHacker.exe -addoverwrite "C:\%~n0.exe", "C:\%~n0.exe", 100.ico, Icon, 100, Цитата:
|
megaloman, gora, спасибо за помощь. Вопрос добавления значка ярлыка тоже решен.
Код:
@Echo off |
Подскажите, как отследить окончание работы RAR и вывести Echo?
С пингом не всегда угадывается. |
Код:
start "Rar" /wait "%ProgramFiles%\Winrar\Winrar.exe" |
amel27, не получается. С wait после архивирования, командная строка сразу закрывается.
Код:
start "Rar" /wait "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -sfx -iicon"1.ico" -z"komm.txt" "C:\%Arhiv%" "%~dp0" |
Цитата:
Вы используете ключ M который удаляет после архивации все файлы из текущей папки в том числе и сам батник. Поэтому батник и не может выполнить ни чего после строки архивирования ибо его (батника) после архивации больше нет. |
Код:
Echo off Если батник запускается из разных папок, чтобы эти служебные батники не размножались, вместо имени "%Tmp%\~%Name%.bat" придумать какое-то постоянное, например, "%Tmp%\~kuku.bat" |
Цитата:
Код:
( |
megaloman, спасибо, принцип понятен, но пока сложен для понимания.
amel27, респект! Всё работает, как надо! |
Подскажите, как отредактировать скрипт
Код:
start "Rar" /wait "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -sfx -iicon"1.ico" -z"komm.txt" "C:\%Arhiv%" "%~dp0" |
Заменить "%~dp0", которое указывает на путь к батнику, на конкретное полное имя папки, которую архивируем, например, "E:\My backup\"
|
Уважаемые знатоки! Нужна помощь по упаковке в 7z sfx архив папки с подпапками и файлами. Есть замечательный скрипт gora http://forum.oszone.net/post-1436397-46.html ,однако он "заточен" под конкретную программу, а не под набор папок и файлов. Самостоятельно подправить его под свои нужды не получается.
|
Цитата:
|
Цитата:
Код:
Access.ru-ru Цитата:
Цитата:
п.с. Если ещё и удастся заменить заменить иконку sfx на свою ( "Updates\1.ico" - reshacker присутствует в системе ), установить вручную дату сборки, добавить описания для понятия принципа работы скрипта, было бы вообще супер. :blush2: |
Вопрос создания архива решен. Спасибо gora!
|
Здравствуйте, ребята. Помогите решить такую задачу. Имеется папка, в ней *.exe файлы и *.txt файлы с описанием. Структура такова
Код:
\explorer.exe Код:
\explorer.exe Код:
\NOTEPAD.EXE \NOTEPAD.EXE.txt |
Ruslan-kam, примерно так:
Код:
@echo off |
Iska, ура! Сработало!
Спасибо, добрый человек. |
Помогите нубу справится.
Архивирую фалы в каталоге найденным здесь же скриптом. Код:
@Echo Off Код:
@Echo Off |
Из письма в PM:
Цитата:
Ваш вопрос непонятен. Скрытый текст
Цитата:
Цитата:
Цитата:
|
Время: 19:52. |
Время: 19:52.
© OSzone.net 2001-