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

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

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

Аватара для Tonny_Bennet

Ветеран


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


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

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


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

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


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

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

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


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

 

Ветеран


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

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


Ruslan-kam, примерно так:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sPath=%~1

if not defined sPath (
	call :Usage
	exit /b 1
)

if not exist "%sPath%\" (
	echo Can't find folder [%sPath%]
	exit /b 2
) else echo 3


for %%i in ("%sPath%\*.*") do (
	for %%j in ("%%~dpni") do (
		echo Add [%%i] into [%%~nj.7z]
		"%ProgramFiles%\7-Zip\7z.exe" a "%%~nj.7z" "%%i" 1>nul
	)
)

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
:Usage
	echo Usage: %~nx0 ^<folder^>
	exit /b 0
rem ==========================================================================
Вызываете, указав в качестве параметра путь к папке: «Имеется папка, в ней *.exe файлы и *.txt файлы с описанием». Дабы сам пакетный файл не попал в архивы — не кладите его в эту папку, а вызывайте из любого другого места указанием пути к нему. Архивы будут созданы в текущей папке.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:01, 14-10-2011 | #51



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

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


Пользователь


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

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


Iska, ура! Сработало!
Спасибо, добрый человек.

Отправлено: 17:29, 14-10-2011 | #52


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


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

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


Помогите нубу справится.
Архивирую фалы в каталоге найденным здесь же скриптом.
Код: Выделить весь код
@Echo Off
ChCp 1251>Nul

Set src=D:\Source
Set arch=D:\Arch
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" -psecret -mhe "!$a!">nul
 ENDLOCAL
))
Теперь нужно выполнить обратную задачу:

Код: Выделить весь код
@Echo Off
ChCp 1251>Nul

Set src=D:\Arch
Set arch=D:\Source1
Set ar7z=C:\Program Files\7-Zip\7z.exe

(for /r "%src%" %%a in (*) do (set "$pna=%%~pna"& set "$a=%%a"
 SETLOCAL EnableDelayedExpansion
 "%ar7z%" x -psecret -o"%arch%!$pna!" "!$a!">nul
 ENDLOCAL
))
В результате каждый архив распаковывается в свою папку, хотя структура каталогов сохраняется. Как сделать, чтобы каждый архив распаковывался как файл, сохранив при этом структуру каталогов?

Отправлено: 15:15, 09-01-2015 | #53


Ветеран


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

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


Из письма в PM:
Цитата Noob_Noob:
Помогите, пжлст, с моим вопросом. Уверен, это не займет у Вас много времени )))

http://forum.oszone.net/thread-185028-6.html

Ваш вопрос непонятен.

Скрытый текст
Цитата Noob_Noob:
найденным здесь же скриптом. »
Где именно? Приведите ссылку на пост, если уж не пишете, что он должен делать.

Цитата Noob_Noob:
обратную задачу »
Что есть «обратная задача» неясно, поскольку не описана «прямая». Словами, разумеется, тоже не описано.

Цитата Noob_Noob:
чтобы каждый архив распаковывался как файл, сохранив при этом структуру каталогов? »
«архив распаковывался как файл» не смог осилить.

Отправлено: 13:11, 11-01-2015 | #54



Компьютерный форум 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




 
Переход