Что нового

Архивирование в ARJ

Tyr

Новичок
Сообщения
43
Репутация
4
Версия AutoIt: 3.3.8.1

Описание:
Нужна автономная программа архивирования содержимого папок в ARJ архив.(т.е. сам файл архиватора хранится на сетевом диске)

Примечания:
Ранее пользовался примерно таким кодом:
Код:
$archive = @ScriptDir & '\rmn.arj'; архив
$files =  @ScriptDir & '\TEST\dze3101.txt'; файлы подлежащие архивации
$batnik = FileOpen(@ScriptDir & '\test.bat', 2)
$batCode = '@echo off' & @CRLF & _
         'set VAR=Test!' & @CRLF & _
         'echo %VAR%'& @CRLF & _
		 'ARJ A ' & $archive & ' ' & $files & @CRLF & _
		 'pause'
FileWrite($batnik, $batCode)
FileClose($batnik)
run(@ScriptDir & '\test.bat')
Sleep(70000)
FileDelete(@ScriptDir & '\test.bat')
FileDelete($files)

Задача усложнилась тем, что архиватор нельзя установить на компьютер. пишу в командной строке полный путь к ARJ архиватору , команду A , имя архива(который будет создан, можно даже без .arj), имя файла (всё через пробел) - работает... а код Autoit не пашет.
И может быть можно сделать этот код более простым?
Немного инфы по архиватору.
Архиватор ARJ.EXE используется следующим образом:
ARJ <command> [-<switch> [-<switch>...]] <archive_name> [<file_names>...]
Обязательный параметр command определяет команду, выполняемую архиватором.
a Добавление новых файлов в архив
d Удаление файлов из архива
e Извлечение файлов из архива
l Просмотр содержимого архива
m Перенос файлов в архив. Файлы записываются в архив, а затем исходные файлы удаляются с диска
x Извлечение файлов из архива с подкаталогами, т.е. восстановление файлов вместе со структурой каталогов и подкаталогов, в которой эти файлы были расположены при архивации.
После одной из приведенных команд могут следовать один или несколько необязательных дополнительных параметров switch. Дополнительные параметры должны выделяться символом '-'. Они задают модификацию выполняемой команды.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Попробуйте так
Код:
$archive = @ScriptDir & '\rmn.arj'; архив
$files =  @ScriptDir & '\TEST\dze3101.txt'; файлы подлежащие архивации
$arjPath = "D:\Work\Utils\ARJ.EXE" ; путь к архиватору
RunWait($arjPath & " A " & $archive & " " & $files)
FileDelete($files)
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
InnI
Я тоже почти такой же вариант сделал.
Но если в имени пути к архиву или файлу пробел,
то не работает. Как только с кавычками не игрался.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Yuriy
А у меня все работает - ("Path")
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
firex
OffTopic:
Да ладно с этими путями, он еще не хочет с русскими папками работать.
D:\Папка\Test.txt - не принимает.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Yuriy [?]
Но если в имени пути к архиву или файлу пробел, то не работает.
У меня версия 2.60 от ноября 1997 нормально работает и с пробелами и с кириллицей. Только не понимает имена файлов свыше восьми символов.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
InnI
А я на этой тестировал:
Редакция 22 [23/06/2005]
ARJ32 v 3.10/Win32
Russian localized version.
Includes GOST 28147-89 encryption module.
Думал чем свежей версия, тем лучше
 
Автор
Tyr

Tyr

Новичок
Сообщения
43
Репутация
4
Yuriy, InnI
На сетевом диске не работает
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Tyr [?]
У меня с локального диска версия 2.6 работает нормально - и создаёт архив и добавляет.
OffTopic:
Зачем вам эта древность? Переходите на 7zip ;)
 
Автор
Tyr

Tyr

Новичок
Сообщения
43
Репутация
4
InnI
аутоит файл arj видит и запускает на сетевом диске (в домене), но архив не создает.
(система Win 7 32 Started)
на лакальных дисках без проблем... Старьё это нужно для отчетов в налоговые, банки, и др органы... они только arj хотят... может есть ARJ который создаст нормально на сетевом диске архив?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Tyr
На сетевом диске не работает
А так? Только свой путь к сетевому диску надо указать.
Код:
$archive = @ScriptDir & '\rmn.arj'; архив
$files =  @ScriptDir & '\TEST\dze3101.txt'; файлы подлежащие архивации
DriveMapAdd("X:", "\\server\C$", 0, "user", "password") ;подкл. сетевой диск C
$arjPath = "X:\Work\Utils\ARJ.EXE" ; путь к архиватору
RunWait($arjPath & " A " & $archive & " " & $files)
DriveMapDel("X:");откл. сетевой диск
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Tyr
Вот так у меня работает
Код:
$archive = "S:\отчеты\rmn.arj" ; архив на сетевом диске
$files =  "D:\файлы\file1.txt"; файлы подлежащие архивации
$arjPath = "S:\арджик\ARJ.EXE" ; путь к архиватору на сетевом диске
RunWait('"' & $arjPath & '" A "' & $archive & '" "' & $files & '"')
FileDelete($files)
Сетевой диск S подключён заранее.
Главное, чтобы в путях не было имён файлов или папок больше 8 символов. И пробелы лучше убрать.
На всякий случай прикладываю версию 2.6, на которой это работает.
 
Автор
Tyr

Tyr

Новичок
Сообщения
43
Репутация
4
InnI, Yuriy, Спасибо за помощь... СРАЗУ НЕ ПОНЯЛ ДЕЛО БЫЛО В ИМЕНАХ ПАПОК
 
Верх