|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Архивирование файлов в каталоге |
|
Любой язык - [решено] Архивирование файлов в каталоге
|
Ветеран Сообщения: 1384 |
Профиль | Отправить PM | Цитировать Здравствуйте.
Есть необходимость архивировать все файлы (кроме уже существующих архивов) в исходном каталоге. Имя архива должно полностью повторять имя файла за исключением расширения. Скрипт должен работать только в определённый промежуток времени (ночью). При создании архива исходный файл должен удаляться. Также нужно вести логи всего происходящего. Не желательно обращаться к WinRar т.к. это программа платная, а на работе с этим строго. Есть опыт написание BAT-ников, и VBS-скриптов, но только исходя из готовых примеров. Хотелось бы чтобы вы дали какие нибудь полезные ссылочки или учебники где всё подробно объясняется. Буду очень признателен |
|
------- Отправлено: 11:36, 09-09-2010 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать kmc, уточним: Вам нужно архивировать всё содержимое одной папки (например, «D:\Ser\Source»), включая все вложенные папки и файлы, в один архив, который нужно помещать в некую папку (например, «D:\Ser\Arch») в создаваемую подпапку с именем, основанным на текущей дате (например, «…%Date:~6,4%%Date:~3,2%%Date:~0,2%»)?
P.S. Код на форуме оформляется тэгом «code». |
Отправлено: 02:32, 21-04-2011 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Iska, Совершенно верно.
|
Отправлено: 08:20, 21-04-2011 | #22 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Подскажите пожалуйста у меня похожая задача, но есть небольшая разница, требуется: архивировать директорию с вложеными папками и кучей файлов, чтобы каждый файл получался как отдельный архив с сохранением структуры папок.
я взял скрипт от 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 Всё работает, но есть косяк, с обработкой файлов содержащих в названии спецсимволы, как можно это обойти и обрабатывать их нормально? |
Отправлено: 12:16, 21-04-2011 | #23 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата chipoza:
@Echo Off ChCp 1251>Nul 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 (set "$pna=%%~pna"& set "$a=%%a" SETLOCAL EnableDelayedExpansion "%ar7z%" a "%arch%!$pna!.7z" "!$a!">nul if exist "%arch%!$pna!.7z" ( echo !date! !time! Файл "%%a" заархивирован в "%arch%!$pna!.7z" del /f/q "!$a!">nul echo !date! !time! Исходный файл "!$a!" удален) ENDLOCAL ))>>log.txt |
|
Отправлено: 12:48, 21-04-2011 | #24 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать amel27, большое спасибо всё работает
|
Отправлено: 13:06, 21-04-2011 | #25 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Iska,хочу также уточнить,чтобы структура папок оставалось той же
|
Отправлено: 08:36, 22-04-2011 | #26 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать kmc, выбирайте вариант:
@Echo Off Set src=e:\Temp\src Set arch=e:\Temp\arch Set ar7z=c:\Program Files\7-Zip\7z.exe :: Упаковка содержимого папки "src" с самой папкой "src" "%ar7z%" a "%arch%\with_folder_%Date:~6,4%%Date:~3,2%%Date:~0,2%.7z" "%src%" >Nul :: Упаковка содержимого папки "src" без самой папкой "src" "%ar7z%" a "%arch%\without_folder_%Date:~6,4%%Date:~3,2%%Date:~0,2%.7z" "%src%\*" >Nul |
Отправлено: 09:56, 22-04-2011 | #27 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать 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% ) |
Отправлено: 10:28, 25-04-2011 | #28 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать 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% ) |
Отправлено: 12:51, 06-05-2011 | #29 |
Ветеран Сообщения: 2190
|
Профиль | Отправить PM | Цитировать Необходимо создать 7z sfx ( или rar sfx ) содержимого папки с подпапками с запуском батника из самой папки. Сам батник должен быть в архиве. Исходную папку очистить. Архив создать в корне диска С.
Такое возможно? п.с. Чтобы сам батник не был занят системой и попал в архив, может быть всё скопировать в временную папку для дальнейшей архивации? |
Последний раз редактировалось sov44, 18-05-2011 в 21:09. Отправлено: 21:02, 18-05-2011 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] узнать количество файлов в каталоге через CMD | toro | Скриптовые языки администрирования Windows | 5 | 04-12-2013 06:31 | |
Разное - [решено] Как получить список файлов находящихся в каталоге? | Kocuk | Microsoft Windows 2000/XP | 8 | 27-02-2012 23:25 | |
FreeBSD - PAX архивирование файлов | BaguM | Общий по FreeBSD | 1 | 05-02-2008 17:33 | |
Проблема в корневом каталоге | Pavel1471 | Microsoft Windows 95/98/Me (архив) | 3 | 27-10-2004 19:19 | |
Root в корневом каталоге | BSOD | Microsoft Windows NT/2000/2003 | 6 | 08-02-2003 16:34 |
|