Показать полную графическую версию : [решено] Архивирование файлов в каталоге
megaloman
20-05-2011, 15:57
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"
после архивирования, командная строка сразу закрывается »можно взять всё это в скобки:
(
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
)
megaloman, спасибо, принцип понятен, но пока сложен для понимания.
amel27, респект! Всё работает, как надо!
Подскажите, как отредактировать скрипт
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
Заменить "%~dp0", которое указывает на путь к батнику, на конкретное полное имя папки, которую архивируем, например, "E:\My backup\"
Уважаемые знатоки! Нужна помощь по упаковке в 7z sfx архив папки с подпапками и файлами. Есть замечательный скрипт gora http://forum.oszone.net/post-1436397-46.html ,однако он "заточен" под конкретную программу, а не под набор папок и файлов. Самостоятельно подправить его под свои нужды не получается.
набор папок и файлов »
Приведите свой список файлов и папок, которые нужно упаковать. Папки нужно упаковывать со всем содержимым? Расположение папок и файлов относительно скрипта (желателен один уровень) ?
Приведите свой список файлов и папок, которые нужно упаковать. »
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
Папки нужно упаковывать со всем содержимым? »
да
Расположение папок и файлов относительно скрипта (желателен один уровень)? »
да, скрипт должен находится в одном уровне с папками и файлами.
п.с. Если ещё и удастся заменить заменить иконку sfx на свою ( "Updates\1.ico" - reshacker присутствует в системе ), установить вручную дату сборки, добавить описания для понятия принципа работы скрипта, было бы вообще супер. :blush2:
Вопрос создания архива решен. Спасибо gora!
Ruslan-kam
13-10-2011, 22:10
Здравствуйте, ребята. Помогите решить такую задачу. Имеется папка, в ней *.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 и так далее.
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
Iska, ура! Сработало!
Спасибо, добрый человек.
Noob_Noob
09-01-2015, 15:15
Помогите нубу справится.
Архивирую фалы в каталоге найденным здесь же скриптом.
@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
))
В результате каждый архив распаковывается в свою папку, хотя структура каталогов сохраняется. Как сделать, чтобы каждый архив распаковывался как файл, сохранив при этом структуру каталогов?
Помогите, пжлст, с моим вопросом. Уверен, это не займет у Вас много времени )))
http://forum.oszone.net/thread-185028-6.html
Ваш вопрос непонятен.
найденным здесь же скриптом. »
Где именно? Приведите ссылку на пост, если уж не пишете, что он должен делать.
обратную задачу »
Что есть «обратная задача» неясно, поскольку не описана «прямая». Словами, разумеется, тоже не описано.
чтобы каждый архив распаковывался как файл, сохранив при этом структуру каталогов? »
«архив распаковывался как файл» не смог осилить.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.