Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Архивирование файлов в каталоге (http://forum.oszone.net/showthread.php?t=185028)

Tonny_Bennet 09-09-2010 11:36 1491638

Архивирование файлов в каталоге
 
Здравствуйте.

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


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

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

gora 09-09-2010 12:52 1491690

Код:

@Echo Off
ChCp 1251>Nul
SetLocal EnableDelayedExpansion
Set src=c:\Temp\src
Set arch=c:\Temp\arch
Set ar7z=c:\Program Files\7-Zip\7z.exe
:: Типы архивов, которые могут быть в исходной папке
Set ext=7z zip rar

(For /R "%src%" %%a In (*.*) Do (
        Set flg=
        For %%i In (%ext%) Do If /I .%%i==%%~xa Set flg=1& Echo !Date! !Time! Архив %%a пропущен
        If Not Defined flg (
                "%ar7z%" a "%arch%\%%~na.7z" "%%a">Nul
                Echo !Date! !Time! Файл %%a заархивирован в %arch%\%%~na.7z
                Del /F/Q "%%a">Nul
                Echo !Date! !Time! Исходный файл %%a удален
        )
)
)>>log.txt

Архиватор можно заменить на автономный 7zr.exe или 7za.exe, положив его в любое место и прописав к нему путь.
Лог будет дописываться при каждом запуске.
Если в исходной папке будут несколько файлов с одинаковым именем, но разным расширением, то они будут упакованы в один архив. Этого можно избежать, если присваивать имя архиву равное имени и расширению исходного файла. В постановке задачи это не оговорено.
Архив можно создавать не 7z, а zip, для этого нужно просто заменить в скрипте расширение.
Запускать скрипт через планировщик.
Исходная папка и папка назначения могут быть и одной папкой

El Sanchez 09-09-2010 13:01 1491700

Цитата:

Цитата Tonny_Bennet
Есть необходимость архивировать все файлы (кроме уже существующих архивов) в исходном каталоге. Имя архива должно полностью повторять имя файла за исключением расширения. »

Tonny_Bennet, в качестве примера используется консольный архиватор 7za:
Код:

@Echo Off
Set Source=C:\Source
Set Logs=C:\Logs

For /F "Tokens=*" %%A In ('Dir /B /S /A-D "%Source%"') Do (
        7za a "%Source%\%%~nA" "%%A" -x!*.7z 1>>"%Logs%\_%Date%_Log.log" 2>>"%Logs%\_%Date%_ErrorLog.log"
        If /I Not "%%~xA"==".7z" Del /F /Q "%%A" >nul
)

Цитата:

Цитата Tonny_Bennet
Скрипт должен работать только в определённый промежуток времени (ночью) »

Настройте запуск батника через планировщик задач.

Цитата:

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

Ссылки


Цитата:

Цитата Tonny_Bennet
Не желательно обращаться к WinRar т.к. это программа платная, а на работе с этим строго. »

Угу, везде так. К WinRAR'у придираются, а стоят пиратские винды и оффисы.


Опоздал...:)

gora 09-09-2010 13:06 1491704

El Sanchez, архивы 7z он не заархивирует повторно, а удалить их ему ни кто не помешает. ;)

El Sanchez 09-09-2010 13:24 1491718

gora, спасибо. Отпуск расхолаживает. Пост исправлен.

Tonny_Bennet 09-09-2010 14:24 1491752

Зпуск в планировщике это конечно хорошо но
Цитата:

Цитата Tonny_Bennet
Скрипт должен работать только в определённый промежуток времени (ночью) »

т.е. запуститься он запуститься а вот кто его остановит неизвестно...

gora, скрипт работает. Спасибо.... но он только и файл логов архивирует и сам файл скрипта если он лежит в папке :)

gora 09-09-2010 14:39 1491760

Цитата:

Цитата Tonny_Bennet
и файл логов архивирует и сам файл скрипта если он лежит в папке»

А зачем он там лежит?! :dont-know В задаче это не оговорено.
1 Вынесите скрипт из папки (лог создается рядом со скриптом)
2 Добавьте расширения скрипта и лога (у лога оно может быть произвольным) в строку
Код:

Set ext=7z zip rar bat txt
Цитата:

Цитата Tonny_Bennet
запуститься он запуститься а вот кто его остановит неизвестно »

Он сам остановится после выполнения работы. Или у Вас там столько файлов, что он за одну ночь их все не упакует и нужно переносить работу на следующую ночь? ;)

Тогда укажите временнЫе границы работы скрипта.

megaloman 09-09-2010 20:38 1492026

Для начала я бы провёл организационные мероприятия. Все архивы поместил бы в отдельную папку. Очень неплохо, чтобы там батник делал подпапки с именем, содержащим год и месяц (и, может быть, день), в которые бы архивы создавались - зачем нужны архивы за неопределённый период. Туда бы записывал лог. В принципе, и батник можно поместить туда же. И, прежде чем удалять исходный файл, я бы убедился, что архив существует (а вдруг место на диске исчерпалось, а файлы будем удалять ...). И, кроме того, я бы застраховался от того, что два файла имеют одинаковые имена, но разные расширения, так как такие файлы обычно архиватором архивируются с одинаковыми именами-расширениями и, в лучшем случае, получим архив с несколькими файлами с одинаковыми именами и разными расширениями. А просили заархивировать каждый файл отдельно.
Код:

Set Source=D:\Source
Set Arch=D:\Source\Arch
Set ExtArc=7Z
Set LogFile=D:\Source\Arch\{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%
  Del %1
)

Source - где исходные файлы
Arch - где архивы
ExtArc - расширение, с которым создаётся архив
LogFile - куда пишется лог-файл
PgmArc - где архиватор (я делал для 7Z)

Например, файл D:\Source\траляля.exe
будет заархивирован в файл D:\Source\Arch\20100909\траляля.exe.7Z
и если файл D:\Source\Arch\20100909\траляля.exe.7Z существует, то удалим D:\Source\траляля.exe

Батник помещаем в назначенные задания, где укажем время его выполнения.
Можно при желании сделать в лог файле выдачу размера каждого файла до и после архивации.

Tonny_Bennet 10-09-2010 11:55 1492388

megaloman, Вот ОНО!!! Благодарю :)

X-myRzA 18-10-2010 15:36 1521544

Как можно упаковать каталог с файлами через lzma? Не просто каталог а именно каждую файл отдельно в свою каталог упаковать и удалить упакованный файл. Например, C:\temp\*.* там есть:

Код:

C:\temp\file.exe
C:\temp\distrib\file.nfo
C:\temp\distrib\folder\file.txt

примерно так:
Код:

C:\temp\file.exe.lzma
C:\temp\distrib\file.nfo.lzma
C:\temp\distrib\folder\file.txt.lzma

А WCX SSSR LZMA плагин через Total CMD так упакует:
Код:

C:\temp\file.exe.lzma
C:\temp\file.nfo.lzma
C:\temp\file.txt.lzma

и не может удалить оригинал файлы.

kmc 13-04-2011 08:45 1657105

Добрый день!!!
В данных рассуждениях идёт речь об архивации файлов в определённой папке.Всё работает,спасибо.

Но вот вопрос,как переделать код для задачи архивации файлов и папок с вложенными файлов,хранящихся в одной папке.
То есть у меня есть папка допустим D:/Source,а в свою очередь в этой папке есть и файлы и папки в которых хранятся файлы.
И также стоит задача архивировать все данные в один файл.

За ранее благодарен

Iska 13-04-2011 12:46 1657256

Цитирую:
Цитата:

Цитата 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)


kmc 14-04-2011 09:13 1657938

Цитирую:
Цитата 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)


Это к моему вопросу?

Iska 14-04-2011 19:08 1658414

kmc, да. Вы пробовали?

Для цитирования используйте тэг «quote».

kmc 15-04-2011 08:00 1658696

Нет не пробовал.Честно говоря не пойму куда этот код вставлять-имеется ввиду после как строчек

zero55 15-04-2011 11:50 1658869

предложу метод на powershell вот он

Iska 15-04-2011 13:40 1658965

Цитата:

Цитата kmc
Честно говоря не пойму куда этот код вставлять-имеется ввиду после как строчек »

Примеры есть непосредственно в справке 7-Zip:
читать дальше »
Цитата:

Цитата -r (Recurse subdirectories) switch

Examples
Код:

7z l archive.zip *.doc -r-
lists all *.doc files that belong to the archived root directory in the archive.zip archive.
Код:

7z a -tzip archive.zip -r src\*.cpp src\*.h
adds all *.cpp and *.h files from directory src and all it's subdirectories to the archive.zip archive.
Код:

7z a archive.7z folder1\
adds all files from directory folder1 and all it's subdirectories to the archive.7z archive.
Код:

7z a archive.7z -r folder2\
searches all folder2 directories in all subdirectories, and adds them (including all subdirectories) to the archive.7z archive.


kmc 19-04-2011 12:23 1661632

Вот исходник,он в принципе такой же как здесь приводят в пример,единственное он не удаляет файлы которые берёт для архивирования.
Где здесь нужно поставить -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%

)

Iska 19-04-2011 17:49 1661859

kmc, тогда сначала словами опишите, что Вам нужно.

kmc 20-04-2011 08:10 1662131

На данном форуме,приведён пример программирования 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%

)

Iska 21-04-2011 02:32 1662777

kmc, уточним: Вам нужно архивировать всё содержимое одной папки (например, «D:\Ser\Source»), включая все вложенные папки и файлы, в один архив, который нужно помещать в некую папку (например, «D:\Ser\Arch») в создаваемую подпапку с именем, основанным на текущей дате (например, «…%Date:~6,4%%Date:~3,2%%Date:~0,2%»)?

P.S. Код на форуме оформляется тэгом «code».

kmc 21-04-2011 08:20 1662848

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

chipoza 21-04-2011 12:16 1663016

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

я взял скрипт от 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


Всё работает, но есть косяк, с обработкой файлов содержащих в названии спецсимволы, как можно это обойти и обрабатывать их нормально?

amel27 21-04-2011 12:48 1663049

Цитата:

Цитата 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

chipoza 21-04-2011 13:06 1663059

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

kmc 22-04-2011 08:36 1663641

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

gora 22-04-2011 09:56 1663698

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


kmc 25-04-2011 10:28 1665287

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%

)

kmc 06-05-2011 12:51 1671226

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%

)

sov44 18-05-2011 21:02 1678731

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

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

megaloman 19-05-2011 00:19 1678837

Имя екзешника=имени батника. Екзешник с архивом в самой папке
Код:

@Echo off
start "Rar" "C:\Program Files\Winrar\Winrar.exe" M -r -sfx "%~n0.exe" "%~dp0"

В корне C:
Код:

@Echo off
start "Rar" "C:\Program Files\Winrar\Winrar.exe" M -r -sfx "C:\%~n0.exe" "%~dp0"

Для 7-Zip несколько сложнее и ненадёжнее, я не знаю у 7-zip ключа, который отвечает за удаление файлов после архивации
Код:

@Echo Off
Set Dir="%~dp0"
Set Name="C:\%~n0.exe"
CD /D %Dir%
"C:\Program Files\7-Zip\7z.exe" a -r -sfx %Name% %Dir%
rd %Dir% /S /Q >nul 1>nul 2>nul


sov44 19-05-2011 07:08 1678885

Как сделать, чтобы сама папка, в которой батник не архивировались, а архивировались в sfx только её содержимое с подпапками? Как добавить комментарий и значёк иконки?

megaloman 19-05-2011 09:19 1678932

Цитата:

Цитата sov44
а архивировались в sfx только её содержимое с подпапками »

Код:

@Echo off
start "Rar" "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -sfx "C:\%~n0.exe" "%~dp0"


sov44 19-05-2011 13:10 1679046

Вопрос добавления комментария к rar sfx решен. Информация взята отсюда

Код:

@Echo off
start "Rar" "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -z"komm.txt" -sfx "C:\%~n0.exe" "%~dp0"

Осталась не решеной задача добавления значка ico в sfx

отправил запрос в службу поддержки RAR

gora 19-05-2011 13:21 1679051

Цитата:

Цитата sov44
задача добавления значка ico в sfx »

Код:

ResHacker.exe -addoverwrite "C:\%~n0.exe", "C:\%~n0.exe", 100.ico, Icon, 100,
Для WinRAR есть специальный ключ для смены иконки:
Цитата:

Ключ -IICON<имя> — указать значок для SFX-архива

Данный ключ позволяет указать значок для создаваемого или обновляемого SFX-архива. Параметр <имя> означает имя файла со значком (.ico). При этом SFX-модуль не должен быть сжат с помощью какой-либо программы упаковки исполняемых файлов (например, UPX).

sov44 19-05-2011 15:04 1679090

megaloman, gora, спасибо за помощь. Вопрос добавления значка ярлыка тоже решен.
Код:

@Echo off
start "Rar" "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -sfx -iicon"1.ico" -z"komm.txt" "C:\%~n0.exe" "%~dp0"


sov44 20-05-2011 10:20 1679493

Подскажите, как отследить окончание работы RAR и вывести Echo?
С пингом не всегда угадывается.

amel27 20-05-2011 14:03 1679597

Код:

start "Rar" /wait "%ProgramFiles%\Winrar\Winrar.exe"
echo WinRAR closed
pause>nul


sov44 20-05-2011 15:02 1679628

amel27, не получается. С wait после архивирования, командная строка сразу закрывается.
Код:

start "Rar" /wait "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -sfx -iicon"1.ico" -z"komm.txt" "C:\%Arhiv%" "%~dp0"
Echo.
Echo.
Echo Самоустанавливающийся архив %Arhiv%
Echo создан в корне диска С
ping 127.0.0.1 -n 35 > nul


gora 20-05-2011 15:54 1679661

Цитата:

Цитата sov44
командная строка сразу закрывается »

Так и должно быть.
Вы используете ключ M который удаляет после архивации все файлы из текущей папки в том числе и сам батник. Поэтому батник и не может выполнить ни чего после строки архивирования ибо его (батника) после архивации больше нет.

megaloman 20-05-2011 15:57 1679664

Код:

Echo off
Set Name=%~n0
Set Dir=%~dp0

rem Set DirR=%Dir%
Set DirR=C:\

echo echo off >"%Tmp%\~%Name%.bat"
echo "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -sfx "%DirR%%Name%.exe" "%Dir%" >>"%Tmp%\~%Name%.bat"
Echo Echo ---------------------------------------------------------- >>"%Tmp%\~%Name%.bat"
echo if exist "%DirR%%Name%.exe" ( >>"%Tmp%\~%Name%.bat"
echo    Echo Создан архив "%DirR%%Name%.exe" >>"%Tmp%\~%Name%.bat"
echo ) Else ( >>"%Tmp%\~%Name%.bat"
echo    Echo !!!! Архив создать не удалось "%DirR%%Name%.exe" >>"%Tmp%\~%Name%.bat"
echo ) >>"%Tmp%\~%Name%.bat"
Echo Echo ---------------------------------------------------------- >>"%Tmp%\~%Name%.bat"
echo Pause >>"%Tmp%\~%Name%.bat"
Start "CMD" CMD /c "%Tmp%\~%Name%.bat"

Смысл всей возни - батник генерирует новый батник в папке для врменных файлов, оттуда его затем запускает. При этом Start упаковщику не нужен вовсе, пока упаковщик не отработает, батник далее исполняться не будет. Недостающие на ваш взгляд ключи для упаковщика припишите самии (коментарии-иконки). Мелкая неприятность - в папке %Tmp% остаётся батник. Но я, например, перед завершением работы эту папку чищу, а, во вторых, несколько байт погоды не делают.
Если батник запускается из разных папок, чтобы эти служебные батники не размножались, вместо имени "%Tmp%\~%Name%.bat" придумать какое-то постоянное, например,
"%Tmp%\~kuku.bat"

amel27 20-05-2011 16:03 1679667

Цитата:

Цитата sov44
после архивирования, командная строка сразу закрывается »

можно взять всё это в скобки:
Код:

(
start "Rar" /wait "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -sfx -iicon"1.ico" -z"komm.txt" "C:\%Arhiv%" "%~dp0"
Echo.
Echo.
Echo Самоустанавливающийся архив %Arhiv%
Echo создан в корне диска С
ping 127.0.0.1 -n 35 > nul
)


sov44 20-05-2011 16:34 1679683

megaloman, спасибо, принцип понятен, но пока сложен для понимания.
amel27, респект! Всё работает, как надо!

sov44 15-06-2011 21:30 1695092

Подскажите, как отредактировать скрипт
Код:

start "Rar" /wait "C:\Program Files\Winrar\Winrar.exe" M -r -ep1 -sfx -iicon"1.ico" -z"komm.txt" "C:\%Arhiv%" "%~dp0"
чтобы создать архив папки с подпапками, запуская командный файл в одной из подпапок.

megaloman 16-06-2011 09:47 1695333

Заменить "%~dp0", которое указывает на путь к батнику, на конкретное полное имя папки, которую архивируем, например, "E:\My backup\"

sov44 18-08-2011 19:48 1734761

Уважаемые знатоки! Нужна помощь по упаковке в 7z sfx архив папки с подпапками и файлами. Есть замечательный скрипт gora http://forum.oszone.net/post-1436397-46.html ,однако он "заточен" под конкретную программу, а не под набор папок и файлов. Самостоятельно подправить его под свои нужды не получается.

gora 18-08-2011 20:04 1734770

Цитата:

Цитата sov44
набор папок и файлов »

Приведите свой список файлов и папок, которые нужно упаковать. Папки нужно упаковывать со всем содержимым? Расположение папок и файлов относительно скрипта (желателен один уровень) ?

sov44 18-08-2011 20:54 1734794

Цитата:

Цитата gora
Приведите свой список файлов и папок, которые нужно упаковать. »

Office 2010 SP1
Код:

Access.ru-ru
AddSettings
Admin
Catalog
Excel.ru-ru
......
Proofing.ru-ru
ProPlus.WW
Publisher.ru-ru
Rosebud.ru-ru
Updates
Word.ru-ru
autorun.inf
msksm.cmd
README.HTM
setup.exe

Цитата:

Цитата gora
Папки нужно упаковывать со всем содержимым? »

да
Цитата:

Цитата gora
Расположение папок и файлов относительно скрипта (желателен один уровень)? »

да, скрипт должен находится в одном уровне с папками и файлами.

п.с. Если ещё и удастся заменить заменить иконку sfx на свою ( "Updates\1.ico" - reshacker присутствует в системе ), установить вручную дату сборки, добавить описания для понятия принципа работы скрипта, было бы вообще супер. :blush2:

sov44 19-08-2011 19:00 1735394

Вопрос создания архива решен. Спасибо gora!

Ruslan-kam 13-10-2011 22:10 1772784

Здравствуйте, ребята. Помогите решить такую задачу. Имеется папка, в ней *.exe файлы и *.txt файлы с описанием. Структура такова
Код:

\explorer.exe
\explorer.exe.txt

\NOTEPAD.EXE
\NOTEPAD.EXE.txt

\regedit.exe
\regedit.exe.txt

Прошу помощи в насании скрипта или батника который упаковал бы файлы с похожими имена в отдельный архив. То есть чтобы
Код:

\explorer.exe
\explorer.exe.txt

заархивировался в explorer.exe.zip
Код:

\NOTEPAD.EXE \NOTEPAD.EXE.txt
в notepad.exe.zip и так далее.

Iska 14-10-2011 07:01 1772961

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 файлы с описанием». Дабы сам пакетный файл не попал в архивы — не кладите его в эту папку, а вызывайте из любого другого места указанием пути к нему. Архивы будут созданы в текущей папке.

Ruslan-kam 14-10-2011 17:29 1773354

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

Noob_Noob 09-01-2015 15:15 2453770

Помогите нубу справится.
Архивирую фалы в каталоге найденным здесь же скриптом.
Код:

@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
))

В результате каждый архив распаковывается в свою папку, хотя структура каталогов сохраняется. Как сделать, чтобы каждый архив распаковывался как файл, сохранив при этом структуру каталогов?

Iska 11-01-2015 13:11 2454450

Из письма в PM:
Цитата:

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

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


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

Скрытый текст
Цитата:

Цитата Noob_Noob
найденным здесь же скриптом. »

Где именно? Приведите ссылку на пост, если уж не пишете, что он должен делать.

Цитата:

Цитата Noob_Noob
обратную задачу »

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

Цитата:

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

«архив распаковывался как файл» не смог осилить.


Время: 19:52.

Время: 19:52.
© OSzone.net 2001-