|
v7: Какой путь использовать в WshShell.Run("7z.exe ...") ? 🠗 (Волшебник 08.07.2024 09:42) | ☑ | ||
---|---|---|---|---|
0
zelenprog
06.07.24
✎
21:25
|
Добрый день!
Понадобилось из 1С архивировать файлы для обмена с оператором ЭДО. Есть "главная" папка на сервере, в этой папке много подпапок. В каждой подпапке лежит несколько файлов, которые должны быть заархивированы в один архив, этот архив должен быть создан в этой же подпапке. Для архивации в обработке пользуюсь командой WshShell.Run("7za.exe ...") Командная строка (в упрощенном виде) выглядит вот так: "7za.exe a -tzip test.zip file1.xml file2.xml ..." Возник вопрос по путям (каталогам, папкам). Понятное дело, что для надежности лучше указывать имена файлов с полными путями. Типа: "7za.exe a -tzip \\server1c\obmen_edo\doc1231\doc1231.zip \\server1c\obmen_edo\doc1231\file1.xml \\server1c\obmen_edo\doc1231\file2.xml ...". Но с полными путями командная строка получается очень длинной. Наверно есть какое-то ограничение на длину командной строки. Наверно чисто теоретически возможна такая ситуация, когда операционка не сможет "переварить" слишком длинную командную строку. Один способ "укоротить" команду - это записать все архивируемые файлы в текстовый файл и сделать командную строку чуть короче: "7za.exe a -tzip \\server1c\obmen_edo\doc1231\doc1231.zip @\\server1c\obmen_edo\doc1231\fileslist.txt". Но все равно командная строка получается длинная. В общем есть желание писать в командной строке только короткие имена файлов без путей. Но тогда возникает вопрос: а найдет ли архиватор эти файлы? Как и где 7z ищет файлы, если их имена указаны без путей? Или с относительными путями? Можно ли сделать командную строку короче, но чтобы это не помешало надежности? Как лучше сделать? |
|||
1
vde69
06.07.24
✎
21:24
|
\\server1c\obmen_edo\doc1231\ - подмапить как сетевой диск
|
|||
2
Волшебник
06.07.24
✎
21:24
|
Вариант с fileslist.txt уже нормальный
|
|||
3
zelenprog
06.07.24
✎
21:29
|
(2) Не вполне.
На самом деле путь к обрабатываемой папке на сервере очень длинный. Кроме того, в командной строке нужно еще указать путь к 7za.exe... В общем все равно получается длинная строка. И остается какое-то беспокойство, что в какой-то ситуации это может не сработать. |
|||
4
zelenprog
06.07.24
✎
21:32
|
(1) >> ... подмапить как сетевой диск
Получается, что на тех компах, где подключен сетевой диск - - все будет работать. А на тех, где нету сетевого диска - обработка будет валиться с ошибками? |
|||
5
vde69
06.07.24
✎
21:36
|
(4) подмапь програмно прямо перед выполненем архивирования и потом отключи
|
|||
6
vde69
06.07.24
✎
21:43
|
типа
net use K: \\server1c\obmen_edo\doc1231\ 7za.exe a ..... net use K: /delete |
|||
7
Salimbek
07.07.24
✎
12:54
|
(0) В 1C++ есть BynaryData в которой можно создавать архивы. Но люди ловили нестабильность работы, поэтому даже классы написаны, которые работу с архивами на себя берут. Например: https://www.1cpp.ru/forum/YaBB.pl?num=1175158780/8#10
|
|||
8
Aleksey
07.07.24
✎
13:48
|
Я DialMail использую, там и FTP там и ZIP
А насчет ограничения - 8191 символов, т.е. 150-200 файлов в качестве параметров винда должна пережевать "Максимальная длина строки, которую можно использовать в командной строке, составляет 8191 символ. Это ограничение применяется к: командная строка отдельные переменные среды, наследуемые другими процессами, такими как переменная PATH все расширения переменных среды Если для выполнения пакетных файлов используется командная строка, это ограничение также применяется к пакетной обработке файлов." (с) https://learn.microsoft.com/ru-ru/troubleshoot/windows-client/shell-experience/command-line-string-limitation |
|||
9
zelenprog
07.07.24
✎
14:30
|
(7) >> В 1C++ есть BynaryData в которой можно создавать архивы. Но ... нестабильность работы ...
Про нестабильность BynaryData я читал, поэтому начал делать через 7zip. >> ... классы написаны, которые работу с архивами на себя берут Про классы не знал - спасибо, посмотрю. |
|||
10
zelenprog
07.07.24
✎
14:34
|
(8) >> Я DialMail использую, там и FTP там и ZIP
Пробовал DialMail. Библиотека вроде подключается, но при попытке создать объект 1С просто молча вываливается. Может быть попалась версия недоработанная? Я нашел в интернете версию 2.7.6b. >> А насчет ограничения - 8191 символов, т.е. 150-200 файлов в качестве параметров винда должна пережевать Это радует. Может быть я зря "кипишую"? |
|||
11
Злопчинский
07.07.24
✎
17:57
|
Так же ж можно встроенным виндявым зипом зазипить
|
|||
12
NorthWind
07.07.24
✎
21:06
|
(0) я им архивировал файлы ЭУПД, причем указывал в строке два файла - xml и sig (bin), а позже еще и файл-описатель МЧД. Можете себе представить длину строки... Тоже через run запускал, правда, из среды vbs. Все отлично работало.
|
|||
13
NorthWind
07.07.24
✎
21:07
|
(11) пробовал, не понравилось. Какие-то нюансы нехорошие были, уже не помню точно, но, кажется, как раз с длинными строками что-то не срасталось. 7z лучше, работает как часы.
|
|||
14
NorthWind
07.07.24
✎
21:05
|
Вот строка из лога
7z a "C:\Documents and Settings\Signer\Мои документы\DOC_OUT\4670025609999\ON_NSCHFDOPPR_2BM-7703270067-2013012406531229784200000000000_2LDA6665F40-EC20-4463-A0DA-8B74A6CA00AA_20240201_aeea0f0c-87ca-4d94-a6d8-77e851665412.zip" "C:\Documents and Settings\Signer\Мои документы\DOC_OUT\4670025609999\ON_NSCHFDOPPR_2BM-7703270067-2013012406531229784200000000000_2LDA6665F40-EC20-4463-A0DA-8B74A6CA00AA_20240201_aeea0f0c-87ca-4d94-a6d8-77e851665412.xml" "C:\Documents and Settings\Signer\Мои документы\DOC_OUT\4670025609999\6_ON_NSCHFDOPPR_2BM-7703270067-2013012406531229784200000000000_2LDA6665F40-EC20-4463-A0DA-8B74A6CA00AA_20240201_aeea0f0c-87ca-4d94-a6d8-77e851665412.bin" "C:\Documents and Settings\Signer\Мои документы\DOC_OUT\4670025609999\DESCRIPTION_2BM-7703270067-2013012406531229784200000000000_2LDA6665F40-EC20-4463-A0DA-8B74A6CA00AA_20240201_aeea0f0c-87ca-4d94-a6d8-77e851665412.xml" -tzip -sdel эту строку он за милую душу прожевывает... |
|||
15
Garykom
гуру
07.07.24
✎
21:16
|
(0) Из 1С создаешь скрипт bat/cmd и запускаешь его на исполнение
Удобно отлаживать скрипт, нет проблем с длинами Может работать независимо от 1С |
|||
16
MarySue
08.07.24
✎
04:02
|
мы опять решаем проблему, которой не существует?
да что ж такое... |
|||
17
DrZombi
гуру
08.07.24
✎
08:07
|
||||
18
zelenprog
08.07.24
✎
11:06
|
(14) Вот-вот. И у меня примерно такая же строка.
(15) >> Из 1С создаешь скрипт bat/cmd ... нет проблем с длинами А почему при использовании скрипта пропадают проблемы с длинами? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |