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

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

romfus 02-03-2020 12:17 2911696

Архивация файлов в ARJ
 
Доброго времени суток, возникла такая задача
В одной папке имеются файлы с расширениями .XML и .p7s
D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\
В другой папке .bmp и .p7s
D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\
Как настроить так чтобы при нажатии скрипта, в папке D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\ создавался архив ARJ с именем "МассивВолжский.ARJ
В другой папке D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\ архив с именем "ОтчетыВолжский.ARJ
Пробовал этот код (Ниже) Не помогает. Раньше был архиватор WinRar все работало. Но данный архиватор уже нельзя использовать. Только 7zip
Код:

for /f "tokens=1-4 delims=/-\. " %%a in ('date /t') do (
set mjour=%%a
set mmois=%%b
set mannee=МассивВолжский

set mydate=%mannee%%mmois%%mjour%
set indir=D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\
set destdir=D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\
set arcpath=':\Program Files\7-zip
"%_arcpath%\Program Files\7-zip\7z.exe" a -ep1 "%destdir%\%mydate%.arj" "%indir%"
del /f /q D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\*.xml
del /f /q D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\*.p7s

for /f "tokens=1-4 delims=/-\. " %%a in ('date /t') do (
set mjour=%%a
set mmois=%%b
set mannee=ОтчетыВолжский
)
set mydate=%mannee%%mmois%%mjour%
set indir=D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\
set destdir=D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\
set arcpath=':\Program Files\7-zip
"%_arcpath%\Program Files\7-zip\7z.exe" a -ep1 "%destdir%\%mydate%.arj" "%indir%"
del /f /q D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\*.bmp
del /f /q D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\*.p7s


iglezz 02-03-2020 13:20 2911704

romfus, 1.
Код:

set "arcpath=c:\Program Files\7-zip"
"%arcpath%\7z.exe" ........

2. ключа -ep1 у 7-zip нет, но требуемые параметры несложно и недолго подобрать. Русская справка есть в теме 7-zip
3. ARJ -- зачем такое расширение?

romfus 02-03-2020 13:34 2911707

Данные архивы которые я потом отправляю требуют именно такое расширение. По договору

alpap 02-03-2020 13:40 2911711

Цитата:

Цитата romfus
архив ARJ »

с архиватором 7z такое не выйдет, хотите переименовывайте для извращения
--------------
Код:

@echo off
set "name1=Волжский"
set "d1="C:\1_Ingener\%name1%\f_оut\Выгрузка\Массив" "Массив" "*.xml" "*.p7s""
set "d2="C:\1_Ingener\%name1%\f_оut\Выгрузка\ОтчётыПоМассивам" "Отчёты" "*.bmp" "*.p7s""
set "arx=C:\Program Files\7-Zip\7z.exe"

for /l %%n in (1 1 2) do call :#arx %%d%%n%%
pause& exit

:#arx
 pushd "%~1"
  "%arx%" a "%~2%name1%.7z" "%~3" "%~4" -sdel
 popd
exit /b


megaloman 02-03-2020 14:47 2911727

Цитата:

Цитата romfus
set mydate=%mannee%%mmois%%mjour% »

Цитата:

Цитата romfus
Раньше был архиватор WinRar все работало. Но данный архиватор уже нельзя использовать. Только 7zip »

Этого не может быть. Ни rar ни 7z не делают архивы в формате arj. В .zip - можно.
Цитата:

Цитата alpap
хотите переименовывайте для извращения »

В представленном коде в первом for потеряна скобка.
Код:

for /f "tokens=1-4 delims=/-\. " %%a in ('date /t') do (
set mjour=%%a
set mmois=%%b
set mannee=ОтчетыВолжский
)
set mydate=%mannee%%mmois%%mjour%

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

romfus 02-03-2020 15:01 2911732

Дата это текущая дата на ПК, то есть МесяцДень. Но это необязательная переменная

Архивы может и не делает, но в скрипте раньше можно было самому задать расширение. в Винраре это срабатывало

megaloman 02-03-2020 16:16 2911748

romfus, То же, что у alpap, но с датой в имени архива. В коде сейчас (жесткое порно) для архиватора 7-Zip формат архива указан как zip, при этом расширение архивного файла будет arj, так как, повторю: Ни rar ни 7z не делают архивы в формате arj. В .zip - можно. ИМХО, он наиболее совместим с остальными архиваторами
Код:

@Echo Off
cls
        Set "ArcType=zip"
        Set "ArcExt=arj"

        Set "Arc="%ProgramFiles%\7-Zip\7zG.exe" a -t%ArcType% -sdel"

        FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"
        Set "MMDD=%@Tdate:~4,2%%@Tdate:~6,2%"

        Call :DoArc "D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив"          "*.XML *.p7s" "D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\МассивВолжский%MMDD%.%ArcExt%"
        Call :DoArc "D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам" "*.bmp *.p7s" "D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\ОтчетыВолжский%MMDD%.%ArcExt%"
pause
Exit /B 0

:DoArc
        Pushd %1 ||(Echo %1 &Exit /B 1)
        %Arc% %3 %~2
        Popd
Exit /B 0


alpap 02-03-2020 16:17 2911750

Цитата:

Цитата romfus
раньше можно было самому задать расширение »

можно то можно, но в пределах доступного для действий используемого архиватора
я уже говорил выше, можете добавить строку для переименования именно а arj (архиватор 7zip откроет этот архив):
Код:

...
ren "МассивВолжский.7z" "МассивВолжский.arj"
...


iglezz 02-03-2020 18:39 2911769

Расширение и сейчас можно задать произвольное, просто формат архива от этого не поменяется...

alpap 02-03-2020 19:19 2911773

Цитата:

Цитата iglezz
Расширение и сейчас можно задать произвольное »

при создании архива - нет, переименовать - да
Цитата:

Цитата iglezz
просто формат архива от этого не поменяется »

ну да, но
Цитата:

Цитата romfus
требуют именно такое расширение »

начальство будет удовлетворено

YuS_2 02-03-2020 19:31 2911777

Цитата:

Цитата alpap
начальство будет удовлетворено »

начальство может и будет... но ведь при попытке распаковать не тем архиватором, может возникнуть легкий когнитивный диссонанс, возможно, даже с последствиями. :)
http://arj.sourceforge.net/

megaloman 02-03-2020 19:59 2911780

YuS_2,
Цитата:

Цитата YuS_2
может возникнуть легкий когнитивный диссонанс, »

А может и не возникнуть. Я не пользовался когда-то любимым arj со времен ms dos 6.22 и не хочу ставить его современную версию, чтобы проверить предположение: подозреваю, он умеет распаковывать архивы формата zip, а что там за расширение у архива - не столь важно. А вообще: ты начальник, тебе и отвечать, сказано 7z - извольте, правда никто не запрещает (я на это надеюсь) уточнить у издавших указание все тонкости путей его выполнения.
Цитата:

Цитата БОЕВОЙ УСТАВ ПО ПОДГОТОВКЕ И ВЕДЕНИЮ ОБЩЕВОЙСКОВОГО БОЯ
Решение на бой (выполнение полученной задачи) командир взвода (отделения, танка) осуществляет единолично на основе уяснения задачи и оценки обстановки.


Iska 02-03-2020 21:55 2911793

Цитата:

Цитата alpap
при создании архива - нет, »

Почему — нет?

iglezz 02-03-2020 23:46 2911805

Цитата:

Цитата alpap
при создании архива - нет, переименовать - да »

Да ну?
Вполне работает
Код:

7za a Archive.AnyExtensionYouChoose *
Цитата:

Цитата YuS_2
начальство может и будет... но ведь при попытке распаковать не тем архиватором, может возникнуть легкий когнитивный диссонанс, возможно, даже с последствиями. »

Ну если по договору требуется именно _расширение_ arj, то формально всё оk :)

alpap 03-03-2020 11:40 2911843

Цитата:

Цитата Iska
Почему — нет? »

(
Цитата:

Цитата iglezz
Да ну? Вполне работает »

)
у меня лично поэтому:
1
-----
так естественно все ок
2

megaloman 03-03-2020 12:07 2911845

alpap, В этом посте мой код.
Возмите и проверьте. У меня делается архив в формате zip c расширением .arj
Для начала, чтобы было на чём тестировать, батник для генерации исходных папок и файлов
Код:

Set "D1=D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив"
Set "D2=D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам"

MD "%D1%" &MD "%D2%"

FOR /L %%i IN (0,1,9) DO (
        >"%D1%\%%i %%i %%i %%i %%i %%i %%i %%i.XML" cd.
        >"%D1%\%%i %%i %%i %%i %%i %%i %%i %%i.p7s" cd.
        >"%D2%\%%i %%i %%i %%i %%i %%i %%i %%i.bmp" cd.
        >"%D2%\%%i %%i %%i %%i %%i %%i %%i %%i.p7s" cd.
)

А вот что выдалось при запуске скрипта (единственное, что поменял, чтобы можно было увидеть выполнение и записать в файл
- Echo Off -> Echo On
- 7zG.exe -> 7z.exe) :
Код:

Z:\>cls

Z:\>Set "ArcType=zip"

Z:\>Set "ArcExt=arj"

Z:\>Set "Arc="C:\Program Files\7-Zip\7z.exe" a -tzip -sdel"

Z:\>FOR /F "tokens=2 delims==." %d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%d"

Z:\>SET "@Tdate=20200303115150"

Z:\>Set "MMDD=0303"

Z:\>Call :DoArc "D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив"          "*.XML *.p7s" "D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\МассивВолжский0303.arj"

Z:\>Pushd "D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив"  || (Echo "D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив"  & Exit /B 1 )

D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив>"C:\Program Files\7-Zip\7z.exe" a -tzip -sdel "D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\МассивВолжский0303.arj" *.XML *.p7s

7-Zip [32] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04

Scanning the drive:
20 files, 0 bytes

Creating archive: D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\МассивВолжский0303.arj

Items to compress: 20


Files read from disk: 20
Archive size: 3022 bytes (3 KiB)

Everything is Ok

D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив>Popd

Z:\>Exit /B 0

Z:\>Call :DoArc "D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам" "*.bmp *.p7s" "D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\ОтчетыВолжский0303.arj"

Z:\>Pushd "D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам"  || (Echo "D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам"  & Exit /B 1 )

D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам>"C:\Program Files\7-Zip\7z.exe" a -tzip -sdel "D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\ОтчетыВолжский0303.arj" *.bmp *.p7s

7-Zip [32] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04

Scanning the drive:
20 files, 0 bytes

Creating archive: D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам\ОтчетыВолжский0303.arj

Items to compress: 20


Files read from disk: 20
Archive size: 3022 bytes (3 KiB)

Everything is Ok

D:\1_Ingener\Волжский\f_оut\Выгрузка\ОтчётыПоМассивам>Popd

Z:\>Exit /B 0

Z:\>pause
Для продолжения нажмите любую клавишу . . .

Z:\>Exit /B 0

Красным выделены строки с запуском архиватора, как видите, расширение прописано .arj
В результате получили файлы
МассивВолжский0303.arj
ОтчетыВолжский0303.arj
Кстати, 7-zip и Rar спокойно эти архивы распаковывают
Может быть, моя (более старая) и Ваша (более новая) версия 7-zip работают по разному? Или надо явно указывать формат архива, например -tzip .

Iska 03-03-2020 13:23 2911854

Цитата:

Цитата alpap
у меня лично поэтому: »

Ну, коллега megaloman уже, собственно, показал, как:
Цитата:

Цитата megaloman
"C:\Program Files\7-Zip\7z.exe" a -tzip -sdel" »

(я лично пока не проверял, но мысль была та же).

alpap 03-03-2020 16:40 2911877

Цитата:

Цитата Iska
я лично пока не проверял »

от перемены мест слагаемых параметров в 7z результат не меняется, я-то как раз проверял:
1
Цитата:

Цитата megaloman
Кстати, 7-zip и Rar спокойно эти архивы распаковывают »

да, открывать и распаковывать - пожалуйста, создать - нет.
этой строкой
Код:

"C:\Program Files\7-Zip\7z.exe" a -tzip "архив.arj" *.bmp
как я понимаю идет создание архива архив.zip и переименование его в архив.arj, а не создание именно архив.arj - я это пытаюсь доказать показать, если я все правильно понимаю. Ну да, так на одну строку меньше записи - компактнее, но не более.

megaloman 03-03-2020 16:47 2911879

alpap,
•Supported formats: ◦Packing / unpacking: 7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM
◦Unpacking only: AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RPM, SquashFS, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR and Z.
Вы меня не слышите:
Цитата:

Цитата megaloman
У меня делается архив в формате zip c расширением .arj »

В Вашем примере надо (чтобы не делать отдельной строкой переименование):
Код:

7z a -tzip arch.arj file.txt
-tarj не поддерживается, как и указано на сайте разработчика, 7-zip не способен создать архив в формате arj.
А расширение архива при архивации можно задать произвольное.

alpap 03-03-2020 17:01 2911882

Цитата:

Цитата megaloman
чтобы не делать отдельной строкой переименование »

правильно, так я и понимаю

Iska 03-03-2020 18:14 2911889

Цитата:

Цитата alpap
от перемены мест слагаемых параметров в 7z результат не меняется, я-то как раз проверял: »

Как не меняется? Меняется. Создаётся zip-архив с расширением «.arj».

Кстати, у меня и без параметра -t работает — архив при этом создаётся 7-Zip (опять-таки, с расширением «.arj»), не знаю, отчего у Вас не сработало.

Цитата:

Цитата alpap
как я понимаю идет создание архива архив.zip и переименование его в архив.arj, а не создание именно архив.arj »

Угу. Всё так.

Update: Кажется, понял: Вы использовали усечённую версию приложения, идущего в комплекте с инсталляцией 7-Zip. Требуется либо пользовать standalone-версию 7-Zip'а — 7za.exe, либо ту же 7z.exe, но тогда принудительно указывать параметр -t («-t7z» или «-tzip») — тогда работает.

YuS_2 03-03-2020 21:03 2911901

Цитата:

Цитата iglezz
Ну если по договору требуется именно _расширение_ arj, то формально всё оk »

Ну, договор... мы пока в глаза его не видели, зато в условиях присутствует:
Цитата:

Цитата romfus
Как настроить так чтобы при нажатии скрипта, в папке D:\1_Ingener\Волжский\f_оut\Выгрузка\Массив\ создавался архив ARJ с именем "МассивВолжский.ARJ »

В правильно заданном вопросе, содержится половина ответа, как говорится. :)

megaloman 03-03-2020 21:10 2911902

YuS_2,
Цитата:

В правильно заданном вопросе, содержится половина ответа, как говорится.
как задан вопрос, так сразу содержится весь ответ: низззьяяяяя! :biggrin:


Время: 10:31.

Время: 10:31.
© OSzone.net 2001-