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

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

Ответить
Настройки темы
Любой язык - [решено] Архивирование файлов в каталоге

Аватара для Tonny_Bennet

Ветеран


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


Конфигурация

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


Здравствуйте.

Есть необходимость архивировать все файлы (кроме уже существующих архивов) в исходном каталоге. Имя архива должно полностью повторять имя файла за исключением расширения. Скрипт должен работать только в определённый промежуток времени (ночью). При создании архива исходный файл должен удаляться. Также нужно вести логи всего происходящего. Не желательно обращаться к WinRar т.к. это программа платная, а на работе с этим строго.


Есть опыт написание BAT-ников, и VBS-скриптов, но только исходя из готовых примеров.

Хотелось бы чтобы вы дали какие нибудь полезные ссылочки или учебники где всё подробно объясняется. Буду очень признателен

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 11:36, 09-09-2010

 

Ветеран


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

Профиль | Отправить 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



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

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

kmc kmc вне форума

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


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

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


Iska, Совершенно верно.

Отправлено: 08:20, 21-04-2011 | #22


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


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

Профиль | Отправить 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
Благодарности: 1563

Профиль | Отправить 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
P.S. для кода используйте теги CODE
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:48, 21-04-2011 | #24


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


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

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


amel27, большое спасибо всё работает

Отправлено: 13:06, 21-04-2011 | #25

kmc kmc вне форума

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


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

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


Iska,хочу также уточнить,чтобы структура папок оставалось той же

Отправлено: 08:36, 22-04-2011 | #26


Аватара для gora

Ушёл из жизни


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

Профиль | Отправить 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

kmc kmc вне форума

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


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

Профиль | Отправить 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

kmc kmc вне форума

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


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

Профиль | Отправить 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
Благодарности: 724

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


Необходимо создать 7z sfx ( или rar sfx ) содержимого папки с подпапками с запуском батника из самой папки. Сам батник должен быть в архиве. Исходную папку очистить. Архив создать в корне диска С.
Такое возможно?

п.с. Чтобы сам батник не был занят системой и попал в архив, может быть всё скопировать в временную папку для дальнейшей архивации?

Последний раз редактировалось sov44, 18-05-2011 в 21:09.


Отправлено: 21:02, 18-05-2011 | #30



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход