Zip архив в zennoposter

phillplacebo

Client
Регистрация
04.02.2020
Сообщения
25
Благодарностей
1
Баллы
3
C#:
string zipPath = @"D:\test.zip"; // путь к архиву
string extractPath = @"D:\"; // куда распаковать
var rnd = new Random();

using (System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zipPath))
{
    var entList = archive.Entries.ToList();
    // 3 - кол-во файлов для распаковки
    for (int i = 0; i < 3 && i < entList.Count; i++)
    {
        var index = rnd.Next(entList.Count);
        entList[index].ExtractToFile(Path.Combine(extractPath, entList[index].FullName));
        entList.RemoveAt(index);
    }                 
}
Как то так
Премного благодарен!
 

phillplacebo

Client
Регистрация
04.02.2020
Сообщения
25
Благодарностей
1
Баллы
3
Коллеги, не подскажете, как такое происходит? Дописал свой кусок кода (обведён красным), чтоб выносил в переменную кол-во записей в архиве. А он выдаёт всё время число, не соответствующее реальному числу файлов в архиве. В данном примере в архиве 140 файлов (фото), код выдаёт 133. Не пойму однако =(
1587145196060.png
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Коллеги, не подскажете, как такое происходит? Дописал свой кусок кода (обведён красным), чтоб выносил в переменную кол-во записей в архиве. А он выдаёт всё время число, не соответствующее реальному числу файлов в архиве. В данном примере в архиве 140 файлов (фото), код выдаёт 133. Не пойму однако =(
Посмотреть вложение 54052
У вас выше идёт распаковка и удаление 9 файлов из архива, вот они и убавляются.
 
  • Спасибо
Реакции: phillplacebo

phillplacebo

Client
Регистрация
04.02.2020
Сообщения
25
Благодарностей
1
Баллы
3

Alex62

Client
Регистрация
16.10.2015
Сообщения
231
Благодарностей
31
Баллы
28
Подскажите пожалуйста, пытаюсь распаковать большей файла на 8 гб, поменьше распаковывает нормально
 
Последнее редактирование:

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Подскажите, что делать если в архиве вместо файлов папка с файлами. То есть код не видет файлов и соответственно выдает ошибку

64278
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Подскажите как правильно прописать параметры преобразования zip архива в rar, а то уже задолбался. Потому что если в zip архиве вложена папка, то будет ошибка при распаковке

64320
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
  • Спасибо
Реакции: Yuriy Zymlex

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Есть такая функция как преобразование архивов ZIP. Но я заметил работоспособность зависит от исполняемого файла. Если нужно распаковать тогда запускается UnRar.exe если запаковать тогда Rar.exe. Если исполняемые файлы перепутать, тогда выдается ошибка. Вопрос какой Исполняемый файл нужно запустить для преобразования ZIP архива
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Попробуйте 7-zip консольный архиватор, он не такой капризный в этом плане.

Посмотреть вложение 64328
[/ЦИТАТА]
Не помогает, отрабатывает нормально, но файлов разархевированых нет.

При этом менял исполняемые файлы, и проверил работоспособно программы, т.е архивы создаются и распаковываются

64339
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Последнее редактирование модератором:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Заработало УРААА, спасибо, спасибо и еще раз спасибо, сам бы точно не разобрался из-за этого -o
 
  • Спасибо
Реакции: Sergodjan

mEdvEd71

Client
Регистрация
03.01.2021
Сообщения
167
Благодарностей
7
Баллы
18
Добавьте в GAC: System.IO.Compression.FileSystem
В using'и: using System.IO.Compression;
C#:
string zipPath = project.Variables["zip"].Value; // переменная PM "zip" с путём к файлу
string extractPath = project.Variables["folder"].Value; // переменная PM "folder" с путём к папке

ZipFile.ExtractToDirectory(zipPath, extractPath);
Добрый день. Подскажите, пожалуйста, что нужно сделать, чтобы код заработал? При выполнении появляется ошибка:

Компиляция кода Ошибка в действии "CS0103" "The name 'ZipFile' does not exist in the current context". [Строка: 4; Cтолбец: 1]
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
  • Спасибо
Реакции: mEdvEd71

mEdvEd71

Client
Регистрация
03.01.2021
Сообщения
167
Благодарностей
7
Баллы
18
Попробуйте параметр добавить:
Добрый день. Подскажите, пожалуйста, как с помощью 7z.exe извлекать файлы, запакованные в несколько архивов? К примеру, 3 части: ghk4yk.rar, ladcg.rar, eyiqsa.rar. Как из них собрать один файл?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
  • Спасибо
Реакции: mEdvEd71

imap

Client
Регистрация
12.07.2020
Сообщения
55
Благодарностей
3
Баллы
8
Приветствую, не нашел в теме как запаковать файл, подскажите пожалуйста
 

catol

Client
Регистрация
05.07.2012
Сообщения
278
Благодарностей
98
Баллы
28
Приветствую, не нашел в теме как запаковать файл, подскажите пожалуйста
System.Diagnostics.Process.Start("CMD.exe", "/k tar -c -f D:\\Stordiag.zip D:\\StorDiag\\file.txt"); - Это файл.
System.Diagnostics.Process.Start("CMD.exe", "/k tar -c -f D:\\Stordiag.zip D:\\StorDiag\\*.*"); - Это содержимое папки.

Попробуй так, это вставлять в Свой код C#

Само собой укажи свои пути как в примере.

Работает только на Windows 10

Документация на русском - https://ab57.ru/cmdlist/tar.html
 

Rimen

Client
Регистрация
28.10.2019
Сообщения
406
Благодарностей
254
Баллы
63

Fedman09

Client
Регистрация
25.02.2020
Сообщения
95
Благодарностей
40
Баллы
28
System.Diagnostics.Process.Start("CMD.exe", "/k tar -c -f D:\\Stordiag.zip D:\\StorDiag\\file.txt"); - Это файл.
System.Diagnostics.Process.Start("CMD.exe", "/k tar -c -f D:\\Stordiag.zip D:\\StorDiag\\*.*"); - Это содержимое папки.

Попробуй так, это вставлять в Свой код C#

Само собой укажи свои пути как в примере.

Работает только на Windows 10

Документация на русском - https://ab57.ru/cmdlist/tar.html
Если у тебя этот метод работает, почему у меня может не работать? Все сделал, как написано
 

catol

Client
Регистрация
05.07.2012
Сообщения
278
Благодарностей
98
Баллы
28
Ты сделал сначала это руками в CMD? Чтоб просмотреть работает или нет и посмотреть ошибки. Ты проверил наличие команды tar в своей Windows 10? Где скрины с ошибками?
 

Fedman09

Client
Регистрация
25.02.2020
Сообщения
95
Благодарностей
40
Баллы
28
Ты сделал сначала это руками в CMD? Чтоб просмотреть работает или нет и посмотреть ошибки. Ты проверил наличие команды tar в своей Windows 10? Где скрины с ошибками?
Вчера перепробовал все методы,которые были перечислены в топике. В итоге создал батник, который в секунду все упаковывает,через WinRar WinZip.
Не знаю пока, как распаковать архив на хостинге. Это единственный трайбл в схеме )
 

catol

Client
Регистрация
05.07.2012
Сообщения
278
Благодарностей
98
Баллы
28
Я делал так, если у тебя есть SSH доступ подключаешься в серверу через библиотеку Net.SSH и отправляешь относительно директории команду unzip zipped_file.zip - https://zennolab.com/discussion/threads/avtomaticheskaja-nastrojka-smtp-servera-soedinenie-s-serverom-po-ssh.23197/

Либо если у тебя сайт и там есть PHP можно распаковать с помощью его! https://stackoverflow.com/questions/8889025/unzip-a-file-with-php
 
  • Спасибо
Реакции: Fedman09

Fedman09

Client
Регистрация
25.02.2020
Сообщения
95
Благодарностей
40
Баллы
28
Я делал так, если у тебя есть SSH доступ подключаешься в серверу через библиотеку Net.SSH и отправляешь относительно директории команду unzip zipped_file.zip - https://zennolab.com/discussion/threads/avtomaticheskaja-nastrojka-smtp-servera-soedinenie-s-serverom-po-ssh.23197/

Либо если у тебя сайт и там есть PHP можно распаковать с помощью его! https://stackoverflow.com/questions/8889025/unzip-a-file-with-php
У меня PHP. Буду за компом,обязательно изучу твою ссылку! Спасибо )
 

catol

Client
Регистрация
05.07.2012
Сообщения
278
Благодарностей
98
Баллы
28
У меня PHP. Буду за компом,обязательно изучу твою ссылку! Спасибо )
UNZIP:
<?php
$unzip = new ZipArchive;
$out = $unzip->open('wordpress.zip');
if ($out === TRUE) {
  $unzip->extractTo(getcwd());
  $unzip->close();
  echo 'File unzipped';
} else {
  echo 'Error';
}
?>
Этот код PHP который я использую.

1. Через ФТП заливаешь архива с именем domain.zip
2. Создаёшь файл php c помощью ZP где вместо wordpress.zip вставляешь своё имя архива.
3. Заливаешь в корень сайта php через ФТП
4. Переходишь ZP по ссылке http://domain.com/php-file.php и ожидание пока закончит работу.
5. Удаляем php файл.
 
  • Спасибо
Реакции: Rain и Fedman09

Fedman09

Client
Регистрация
25.02.2020
Сообщения
95
Благодарностей
40
Баллы
28
UNZIP:
<?php
$unzip = new ZipArchive;
$out = $unzip->open('wordpress.zip');
if ($out === TRUE) {
  $unzip->extractTo(getcwd());
  $unzip->close();
  echo 'File unzipped';
} else {
  echo 'Error';
}
?>
Этот код PHP который я использую.

1. Через ФТП заливаешь архива с именем domain.zip
2. Создаёшь файл php c помощью ZP где вместо wordpress.zip вставляешь своё имя архива.
3. Заливаешь в корень сайта php через ФТП
4. Переходишь ZP по ссылке http://domain.com/php-file.php и ожидание пока закончит работу.
5. Удаляем php файл.
Привет. Сейчас протестировал твой метод. ТЫ ЛУЧШИЙ!!!!!!!!!!!!!!!!!!!!!!! Никто не смог подсказать, как без пятого колеса и геммороя разархивировать, а у тебя абсолютно простое решение - это бомба! Супер! Огромнейшее тебе спасибо! Сразу решена куча трайблов !!!! Вот бы мне сейчас такие знания! Спасибо!!! ))))))) Дай бог тебе всего, что сам себе захочешь в жизни! )))
 

boosh1c

Client
Регистрация
30.03.2021
Сообщения
7
Благодарностей
0
Баллы
1
Всем привет!
Подскажите пжлст,
мне нужно распаковать zip с несколькими одноименными файлами, соответственно с заменой имени. Например было в архиве 2 файла с одинаковым именем FileName и FileName, стало после распаковки FileName и FileName(1)
Обычный метод: ZipFile.ExtractToDirectory(zipfile, zipfolder); - не подходит,
выдает исключение: "такой файл уже существует ".

Вроде нашел метод в документации на docs.microsoft.com, но не понимаю как его адаптировать в ЗП:
public static void ExtractToFile (this System.IO.Compression.ZipArchiveEntry source, string destinationFileName, bool overwrite);
 

Alex_SZ

Client
Регистрация
25.02.2022
Сообщения
7
Благодарностей
0
Баллы
1
Добавьте в GAC: System.IO.Compression.FileSystem
В using'и: using System.IO.Compression;
C#:
string zipPath = project.Variables["zip"].Value; // переменная PM "zip" с путём к файлу
string extractPath = project.Variables["folder"].Value; // переменная PM "folder" с путём к папке

ZipFile.ExtractToDirectory(zipPath, extractPath);
Добрый день, код выдает ошибку:

Компиляция кода Ошибка в действии "CS0103" "The name 'ZipFile' does not exist in the current context". [Строка: 3; Cтолбец: 1]


в чем может быть проблема? в GAC и using добавил
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)