Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 11568|Odpowiedź: 2

[Źródło] [Rzeczywista walka]. NET/C# wywołuje dekompresję 7z za pomocą linii poleceń

[Skopiuj link]
Opublikowano 30.04.2022 17:46:24 | | | |
Wymagania: Projekt musi zdekompresować lub skompresować przesłany skompresowany pakiet, co zazwyczaj można osiągnąć za pomocą WinRAR, ale musimy użyć metod programistycznych do implementacji, a ręczna dekompresja pliku jest niemożliwa. Ponieważ WinRAR jest płatny, możemy użyć .NET/C# do wywołania 7z, wykonując operacje wiersza poleceń w celu zaspokojenia naszych potrzeb.

Recenzja:

.NET/C#, aby uzyskać informacje o pliku w pakiecie zip
https://www.itsvse.com/thread-4831-1-1.html

Java encapsulation zip unzip unzip method
https://www.itsvse.com/thread-7750-1-1.html

C# używa ICSharpCode.SharpZipLib.dll do kompresji i dekompresji plików/folderów
https://www.itsvse.com/thread-3726-1-1.html
7-Zip to archiwizator plików o wysokim współczynniku kompresji. 7-Zip jest open-source i darmowy. Większość kodu jest licencjonowana przez GNU LGPL. Niektóre części kodu są licencjonowane na podstawie BSD 3 Conditions. Niektóre części kodu mają również ograniczenia licencyjne unRAR.

Adres do pobrania:Logowanie do linku jest widoczne., pominięto kroki pobierania i instalacji (artykuł jest zainstalowany w katalogu :D:\360Downloads)

Parametry linii poleceń 7-Zip są następujące:


7-Zip 21.07 (x64) : Copyright (c) 1999-2021 Igor Pavlov : 2021-12-26

Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]

<Commands>
  a : Dodaj pliki do archiwum
  b : Benchmark
  d : Usuń pliki z archiwum
  e : Rozpakuj pliki z archiwum (bez używania nazw katalogów)
  h: Obliczaj wartości skrótu dla plików
  i : Pokaż informacje o obsługiwanych formatach
  l : Lista zawartości archiwum
  rn : Przemianowanie plików w archiwum
  t : Testuj integralność archiwum
  u : Zaktualizuj pliki do archiwum
  x : eXtract files z pełnymi ścieżkami

<Switches>
  -- : Przełączniki stop i parsowanie @listfile
  -ai[r[-|0]]{@listfile|! Dzika karta} : Dołącz archiwa
  -ax[r[-|0]]{@listfile|! dzika karta} : eXclude archives
  -ao{a|s|t|u} : ustaw tryb Nadpisu
  -an : wyłącz pole archive_name
  -bb[0-3] : ustaw poziom logu wyjściowego
  -bd : wyłącz wskaźnik postępu
  -bs{o|e|p}{0|1|2} : ustaw strumień wyjściowy dla linii output/error/progress
  -BT : Pokaż statystyki czasu wykonania
  -I[r[-|0]]{@listfile|! Dzika karta} : Uwzględnij nazwy plików
  -m{Parameters} : ustaw metodę kompresji
    -mmt[N] : ustaw liczbę wątków CPU
    -mx[N] : ustaw poziom kompresji: -mx1 (najszybszy) ... -mx9 (ultra)
  -o{Directory} : zestaw Output Directory
  -p{Password} : set Password
  -r[-|0] : Podkatalogi rekurencji do wyszukiwania nazw
  -sa{a|e|s} : ustaw tryb nazw archiwum
  -scc{UTF-8| WIN| DOS} : ustaw zestaw znaków dla wejścia/wyjścia konsoli
  -scs{UTF-8| UTF-16LE| UTF-16BE| WIN| DOS| {id}} : set charset for list files
  -scrc[CRC32| CRC64| SHA1| SHA256|*] : ustaw funkcję skrótu dla poleceń x, e, h
  -sdel: usuń pliki po kompresji
  -seml[.] : Wyślij archiwum mailowo
  -sfx[{name}] : Utwórz archiwum SFX
  -si[{name}] : odczyt danych ze stdin
  -slp : ustaw tryb Duże Strony
  -slt : pokaż informacje techniczne dla polecenia l (List)
  -SNH: Przechowuj twarde linki jako linki
  -SNL : przechowuj symboliczne linki jako linki
  -sni : przechowuj informacje bezpieczeństwa NT
  -sns[-] : przechowuj alternatywne strumienie NTFS
  -Więc : zapisuj dane do stdout
  -SPD : wyłącz dopasowanie dzikich dla nazw plików
  -SPE : eliminuj duplikację folderu głównego dla polecenia extract
  -SPF : używaj w pełni kwalifikowanych ścieżek plików
  -ssc[-] : ustaw tryb czułej wielkości przypadków
  -SSE: Przestań tworzyć archiwum, jeśli nie da się otworzyć jakiegoś pliku wejściowego
  -ssp : nie zmieniaj czasu ostatniego dostępu plików źródłowych podczas archiwizacji
  -SSW : Kompresuj pliki współdzielone
  -STL : ustaw znacznik czasu archiwum z ostatnio zmodyfikowanego pliku
  -stm{HexMask} : ustaw maskę powinowactwa wątku CPU (liczba szesnastkowa)
  -stx{Type} : exclude archive type
  -t{Type} : Typ zbioru archiwum
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Opcje aktualizacji
  -v{Size}[b|k|m|g] : Tworzenie woluminów
  -w[{path}] : przypisz katalog pracy. Pusta ścieżka oznacza katalog tymczasowy
  -x[r[-|0]]{@listfile|! dzika karta} : eXclude nazwy plików
  -y : załóżmy Tak na wszystkie zapytania
Kompresuj teczki za pomocą 7z

Polecenie brzmi następująco:


Dzięki dodaniu parametru -sdel, folder zh jest automatycznie usuwany po zakończeniu kompresji. Przetestujmy skompresowany plik za pomocą WinRAR, jak pokazano poniżej:



Rozpakuj plik za pomocą 7z

Polecenie brzmi następująco:


Dekompresja kończy się zgodnie z poniższym rysunkiem:



.NET/C# wywołuje dekompresję 7z za pomocą linii poleceń

Jak użyć kodu .NET/C# do wykonania wiersza poleceń? Kod jest następujący:

(Koniec)




Poprzedni:65 stron do pobrania kodu źródłowego
Następny:[Rzeczywista walka]. NET/C# ustawia czas przejścia dla metody
 Ziemianin| Opublikowano 30.04.2022 17:49:29 |
e Rozpakuj pliki (wszystkie skompresowane pliki są dekompresowane do tego samego katalogu, bez zachowania oryginalnej struktury katalogu)
# Rozpakuj plik do aktualnego katalogu
7z e archive.zip
# Rozpakuj plik do katalogu e:\testunzip
7z e archive.zip -oe:\testunzip
# Rozpakuj wszystkie pliki PNG do katalogu e:\testunzip
7z e archive.zip -oe:\testunzip *.png -r

x Rozpakuj plik (zachowaj oryginalną strukturę katalogów)
# Rozpakuj plik do aktualnego katalogu
7z x archive.zip
# Rozpakuj plik do katalogu e:\testunzip
7z x archive.zip -oe:\testunzip
# Rozpakuj wszystkie pliki PNG do katalogu e:\testunzip
7z x archive.zip -oe:\testunzip *.png -r

Zobacz listę wszystkich plików w pakiecie
7z l archive.zip

-ao Jak obsługiwane są pliki o tej samej nazwie
# -aoa nadpisuje plik o tej samej nazwie
7z x archive.zip -aoa
# -aos Pomiń plik o tej samej nazwie
# -aou nadaje archiwum tę samą nazwę
# -aot zmienia nazwy plików w rozpakowanym katalogu o tej samej nazwie

d Usuń pliki wewnątrz pakietu
# Usuń wszystkie pliki z przyrostkiem .bak w archive.zip
7z d archive.zip *.bak -r

rn zmienia nazwę pliku wewnątrz pakietu
# Przemianuj plik 1.png 1_new.png 2.png folder\2_new.png
7z obecnie archive.7z 1.png 1_new.png 2.png folder\2_new.png
Opublikowano 30.04.2022 20:05:18 |
Ucz się uczyć się.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com