Zip архив в zennoposter

  • Автор темы Автор темы Nikitos
  • Дата начала Дата начала
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);
    }                 
}

Как то так

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

64278
 
Подскажите как правильно прописать параметры преобразования zip архива в rar, а то уже задолбался. Потому что если в zip архиве вложена папка, то будет ошибка при распаковке

64320
 
  • Спасибо
Реакции: Yuriy Zymlex
Есть такая функция как преобразование архивов ZIP. Но я заметил работоспособность зависит от исполняемого файла. Если нужно распаковать тогда запускается UnRar.exe если запаковать тогда Rar.exe. Если исполняемые файлы перепутать, тогда выдается ошибка. Вопрос какой Исполняемый файл нужно запустить для преобразования ZIP архива
 
Попробуйте 7-zip консольный архиватор, он не такой капризный в этом плане.

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

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

64339
 
Последнее редактирование:
Заработало УРААА, спасибо, спасибо и еще раз спасибо, сам бы точно не разобрался из-за этого -o
 
  • Спасибо
Реакции: Sergodjan
Добавьте в 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]
 
  • Спасибо
Реакции: mEdvEd71
Попробуйте параметр добавить:
Добрый день. Подскажите, пожалуйста, как с помощью 7z.exe извлекать файлы, запакованные в несколько архивов? К примеру, 3 части: ghk4yk.rar, ladcg.rar, eyiqsa.rar. Как из них собрать один файл?
 
  • Спасибо
Реакции: mEdvEd71
Приветствую, не нашел в теме как запаковать файл, подскажите пожалуйста
 
Приветствую, не нашел в теме как запаковать файл, подскажите пожалуйста

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
 
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
Если у тебя этот метод работает, почему у меня может не работать? Все сделал, как написано
 
Ты сделал сначала это руками в CMD? Чтоб просмотреть работает или нет и посмотреть ошибки. Ты проверил наличие команды tar в своей Windows 10? Где скрины с ошибками?
 
Ты сделал сначала это руками в CMD? Чтоб просмотреть работает или нет и посмотреть ошибки. Ты проверил наличие команды tar в своей Windows 10? Где скрины с ошибками?
Вчера перепробовал все методы,которые были перечислены в топике. В итоге создал батник, который в секунду все упаковывает,через WinRar WinZip.
Не знаю пока, как распаковать архив на хостинге. Это единственный трайбл в схеме )
 
Я делал так, если у тебя есть SSH доступ подключаешься в серверу через библиотеку Net.SSH и отправляешь относительно директории команду unzip zipped_file.zip - https://zennolab.com/discussion/thr...p-servera-soedinenie-s-serverom-po-ssh.23197/

Либо если у тебя сайт и там есть PHP можно распаковать с помощью его! https://stackoverflow.com/questions/8889025/unzip-a-file-with-php
 
  • Спасибо
Реакции: UpDate0909
Я делал так, если у тебя есть SSH доступ подключаешься в серверу через библиотеку Net.SSH и отправляешь относительно директории команду unzip zipped_file.zip - https://zennolab.com/discussion/thr...p-servera-soedinenie-s-serverom-po-ssh.23197/

Либо если у тебя сайт и там есть PHP можно распаковать с помощью его! https://stackoverflow.com/questions/8889025/unzip-a-file-with-php
У меня PHP. Буду за компом,обязательно изучу твою ссылку! Спасибо )
 
У меня 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 и UpDate0909
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 файл.
Привет. Сейчас протестировал твой метод. ТЫ ЛУЧШИЙ!!!!!!!!!!!!!!!!!!!!!!! Никто не смог подсказать, как без пятого колеса и геммороя разархивировать, а у тебя абсолютно простое решение - это бомба! Супер! Огромнейшее тебе спасибо! Сразу решена куча трайблов !!!! Вот бы мне сейчас такие знания! Спасибо!!! ))))))) Дай бог тебе всего, что сам себе захочешь в жизни! )))
 
Всем привет!
Подскажите пжлст,
мне нужно распаковать 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);
 
Добавьте в 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 добавил
 

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