Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Visual-Basic-Forum VB-Paradise.de. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

Osiris85

Registrierter Benutzer

  • »Osiris85« ist männlich
  • »Osiris85« ist der Autor dieses Themas

Beiträge: 201

Dabei seit: 13. Oktober 2009

Frühere Benutzernamen: Osiris85

Hilfreich-Bewertungen: 18

  • Private Nachricht senden

1

Donnerstag, 8. Juli 2010, 10:48

Dateien mit 7-Zip packen / entpacken

Moin,

hier ein kleines Tutorial, wie man aus einer VB.NET-Anwendung (bei mir ists 2008) heraus Dateien mit der 7-Zip-Konsole packt / entpackt / bearbeitet. Dabei wird 7-Zip als Prozess behandelt.

Visual Basic Quellcode

1
2
3
4
5
6
7
Dim SevenZip as New System.Diagnostics.Process
'Pfad zur 7z.exe
SevenZip.StartInfo.Filename = "C:\Programme\7-Zip\7z.exe"      
'Parameter für die 7z-Konsole
SevenZip.StartInfo.Arguments = "a C:\Testarchiv.zip C:\Datei1.txt C:\Datei2.txt"    

SevenZip.Start()


Weitere Befehle für die Konsole gibts in der 7-zip.chm.
Wer nun mit der erstellen Zip-Datei oder den entpackten Dateien noch weiterarbeiten möchte, der kann warten, bis die 7-Zip-Konsole fertig ist:

Visual Basic Quellcode

1
2
'Wartet bis 7-Zip fertig ist (=automat. geschlossen wurde)
SevenZip.WaitForExit()


Das Programm selbst ist dann für diese Zeit allerdings "eingefroren". Man kann den kompletten Prozess natürlich mit einem BackgroundWorker abwickeln, wodurch das Hauptprogramm weiter genutzt werden kann, der 7-Zip-Thread wartet weiterhin wie gewünscht auf das Beenden der Konsole.

Weiterhin empfielt sich noch die Überprüfung, ob 7-Zip erfolgreich war oder nicht:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
'ExitCodes von 7-Zip
Select Case SevenZip.ExitCode
   Case 0: MessageBox.Show("7-Zip: Erfolg")
               'hier weitere Prozesse, z.B. Datei-Upload etc.
   Case 1: MessageBox.Show("7-Zip: Warnung")
   Case 2: MessageBox.Show("7-Zip: schwerer Fehler")
   Case 7: MessageBox.Show("7-Zip: Command Line-Fehler")
   Case 8: MessageBox.Show("7-Zip: Nicht genügend Speicher")
   Case 255: MessageBox.Show("7-Zip: vom Benutzer abgebrochen")
End Select


Den kompletten Code gibts hier:
 Hier klicken für weitere Informationen

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim SevenZip as New System.Diagnostics.Process
'Pfad zur 7z.exe
SevenZip.StartInfo.Filename = "C:\Programme\7-Zip\7z.exe"      
'Parameter für die 7z-Konsole
SevenZip.StartInfo.Arguments = "a C:\Testarchiv.zip C:\Datei1.txt C:\Datei2.txt"    

SevenZip.Start()

'Wartet bis 7-Zip fertig ist (=automat. geschlossen wurde)
SevenZip.WaitForExit() 

'ExitCodes von 7-Zip
Select Case SevenZip.ExitCode
   Case 0: MessageBox.Show("7-Zip: Erfolg")
     'hier weitere Prozesse, z.B. Datei-Upload etc.
   Case 1: MessageBox.Show("7-Zip: Warnung")
   Case 2: MessageBox.Show("7-Zip: schwerer Fehler")
   Case 7: MessageBox.Show("7-Zip: Command Line-Fehler")
   Case 8: MessageBox.Show("7-Zip: Nicht genügend Speicher")
   Case 255: MessageBox.Show("7-Zip: vom Benutzer abgebrochen")
End Select

Codenascher und Programmator :whistling: ... steigt auf C# um!

[Langzeitprojekt] ELENA - Hausautomatisierung und Infotainment-Center

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Osiris85« (8. Juli 2010, 20:04)


Es haben bereits 5 registrierte Benutzer diesen Beitrag als hilfreich eingestuft.

Benutzer, die diesen Beitrag hilfreich fanden:

CleaN, sycyrius, vb-checker, iProgramm, ramon1611

Phthmaster99

unregistriert

2

Donnerstag, 8. Juli 2010, 20:33

Geht das auch mit WinRAR? Wäre cool... ^^

Osiris85

Registrierter Benutzer

  • »Osiris85« ist männlich
  • »Osiris85« ist der Autor dieses Themas

Beiträge: 201

Dabei seit: 13. Oktober 2009

Frühere Benutzernamen: Osiris85

Hilfreich-Bewertungen: 18

  • Private Nachricht senden

3

Donnerstag, 8. Juli 2010, 22:49

Musste mal bei Google suchen, ob WinRAR Konsolenbefehle unterstützt. Wenn ja, einfach den StartInfo.Filename, StartInfo.Arguments und wenn benötigt die ExitCodes dementsprechend anpassen.
Aber 7-Zip macht doch alles mit ... 7z, rar, zip und ist auch noch kostenlos. Was will man mehr?! ;)
Codenascher und Programmator :whistling: ... steigt auf C# um!

[Langzeitprojekt] ELENA - Hausautomatisierung und Infotainment-Center

Mono

Registrierter Benutzer

  • »Mono« ist männlich

Beiträge: 1 768

Dabei seit: 20. April 2009

Wohnort: Dresden

Hilfreich-Bewertungen: 113

  • Private Nachricht senden

4

Freitag, 9. Juli 2010, 09:49

Als kleine Anmerkung.
Prozesse können auch Events auslösen. Dadurch brauchst du keine BGW oder ähnliches und du musst nicht im GUI Thread auf das Resultat warten.
Man muss nur bedenken, das die Events dann vom "Prozess-Thread" ausgelöst werden und zB nicht ohne Invoke auf die GUI zugreifen können.

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 Private WithEvents SevenZip As System.Diagnostics.Process
Sub StartePro
 SevenZip = New System.Diagnostics.Process
 SevenZip.EnableRaisingEvents = True
 SevenZip.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
End Sub
Private Sub SevenZip_Exited(ByVal sender As Object, ByVal e As System.EventArgs) Handles SevenZip.Exited
        Select Case SevenZip.ExitCode
            Case 0 : MessageBox.Show("7-Zip: Erfolg")
                'hier weitere Prozesse, z.B. Datei-Upload etc.
            Case 1 : MessageBox.Show("7-Zip: Warnung")
            Case 2 : MessageBox.Show("7-Zip: schwerer Fehler")
            Case 7 : MessageBox.Show("7-Zip: Command Line-Fehler")
            Case 8 : MessageBox.Show("7-Zip: Nicht genügend Speicher")
            Case 255 : MessageBox.Show("7-Zip: vom Benutzer abgebrochen")
        End Select
    End Sub


Gruß Mono

(ich find das Tut gut, find gut das 7ZIP die Konsolenvariante kostenlos anbietet, Winzip hat das auch, aber dafür benötigst du eine Lizenz meines Wissens. Funktioniert aber genauso gut)


Das ist meine Signatur und sie wird wunderbar sein!

Puiscel

Registrierter Benutzer

Beiträge: 175

Dabei seit: 29. April 2009

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

5

Samstag, 24. Juli 2010, 16:05

Ist das ganze denn erlaubt das dann so zu verwenden?

Gugi

VB.NET & C# Programmierer

Beiträge: 1 504

Hilfreich-Bewertungen: 50

  • Private Nachricht senden

6

Samstag, 24. Juli 2010, 16:20

Ist das ganze denn erlaubt das dann so zu verwenden?

ich denke schon, und wenn nicht könnte man das entpacken auch so machen: [VB.NET] Zip-Datei ohne externe Tools entpacken.
ob das mit dem packen auch so geht weis ich nicht.

lg Gugi

JU84553Hgd

$("#userTitle").val("6251");

Beiträge: 528

Hilfreich-Bewertungen: 39

  • Private Nachricht senden

7

Mittwoch, 28. Juli 2010, 09:59

Bei Winrar gibts das natürlich auch: WinRAR - Hilfe.zip <-- WinRAR Hilfe
Da muss man das öffnen:
RemoteSteuerung 3.0: 51%
Status: Hintergrundvorgänge


Smackdown

Security Experte

  • »Smackdown« ist männlich

Beiträge: 85

Dabei seit: 13. April 2010

Frühere Benutzernamen: Smackdown

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

8

Mittwoch, 28. Juli 2010, 21:55

Frage

Ich habe mal eine Frage.

Als ich versucht habe, einen Ordner mit mehrfachen Unterordnern und Dateien zu packen, hat es das nicht getan.

Ich möchte gern wissen, wieso das so ist.

Gruß Smackdown. :D
Besucht meinen YouTube Kanal & meine Website

Auf meinem YouTube Kanal & meiner Website, gibt es Video Tutorials zu den Themen Linux, Windows & Security.


YouTube Kanal:
http://www.youtube.com/user/SecureOne1000

Website: http://www.secureone1000.de/

Lord Maul

Registrierter Benutzer

Beiträge: 14

Dabei seit: 9. August 2010

  • Private Nachricht senden

9

Dienstag, 10. August 2010, 11:50

Ich werd aus dem hier nicht schlau:

>> SevenZip.StartInfo.Arguments = "a C:\Testarchiv.zip C:\Datei1.txt C:\Datei2.txt"
Das mit >> Testarchiv.zip << ist klar, aber C:\Datei1.txt C:\Datei2.txt nicht.
Was soll hier angegeben werden? Die Datei wo es entpackt werden soll? Wenn ja: Warum Datei1 und Datei2?
?(
Bli Bla Blubb: 12%

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 457

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 500

  • Private Nachricht senden

10

Dienstag, 10. August 2010, 11:57

ich schätze viel mehr, welche verpackt werden sollen ;)
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

Lord Maul

Registrierter Benutzer

Beiträge: 14

Dabei seit: 9. August 2010

  • Private Nachricht senden

11

Dienstag, 10. August 2010, 12:01

Und wie entpacke ich Dateien mit 7z?
Der Thread heißt "Dateien mit 7-Zip packen / entpacken", und dann wird die hälfte nicht einmal behandelt.
Klasse :thumbdown:
Bli Bla Blubb: 12%

Gugi

VB.NET & C# Programmierer

Beiträge: 1 504

Hilfreich-Bewertungen: 50

  • Private Nachricht senden

12

Dienstag, 10. August 2010, 12:02

Ich werd aus dem hier nicht schlau:

>> SevenZip.StartInfo.Arguments = "a C:\Testarchiv.zip C:\Datei1.txt C:\Datei2.txt"
Das mit >> Testarchiv.zip << ist klar, aber C:\Datei1.txt C:\Datei2.txt nicht.
Was soll hier angegeben werden? Die Datei wo es entpackt werden soll? Wenn ja: Warum Datei1 und Datei2?
?(

ich denke, er fügt einem vorhanden archiv die dateien datei1.txt und datei2.txt hinzu.

lg Gugi

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 457

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 500

  • Private Nachricht senden

13

Dienstag, 10. August 2010, 12:06

das steht nirgends dranne, deshalb guckst du dir am besten die

Zitat

7-zip.chm
an, wie die Befehle dafür aussehen müssten...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

alkoforumm

Registrierter Benutzer

Beiträge: 10

Dabei seit: 12. April 2011

  • Private Nachricht senden

14

Dienstag, 10. Mai 2011, 20:26

Hi
habe das Problem das ich irgendwie einen Ordner mit Unterordner und Dateien nicht packen kann kommt immer... 7-Zip: Warnung
Habe schon alles mögliche ausprobiert.....

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Dim weltname1 As String
	Dim weltname2 As String
	Dim appdata_new As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
	Dim appdata As String = appdata_new & "\" & ".minecraft" & "\" & "saves"
	Dim SevenZip As New System.Diagnostics.Process
	Dim exe_pfad As String

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    weltname1 = "a " & appdata & "\" & "new.zip " & appdata & "\" & weltname2

    SevenZip.StartInfo.FileName = exe_pfad
    'Parameter für die 7z-Konsole
    SevenZip.StartInfo.Arguments = weltname1
    SevenZip.Start()
    'Wartet bis 7-Zip fertig ist (=automat. geschlossen wurde)
    SevenZip.WaitForExit()
    Select Case SevenZip.ExitCode
        Case 0 : MessageBox.Show("7-Zip: Erfolg")
            'hier weitere Prozesse, z.B. Datei-Upload etc.
        Case 1 : MessageBox.Show("7-Zip: Warnung")
        Case 2 : MessageBox.Show("7-Zip: schwerer Fehler")
        Case 7 : MessageBox.Show("7-Zip: Command Line-Fehler")
        Case 8 : MessageBox.Show("7-Zip: Nicht genügend Speicher")
        Case 255 : MessageBox.Show("7-Zip: vom Benutzer abgebrochen")
    End Select
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    'Name Check
    If TextBox2.Text = "" Then
        PictureBox1.Visible = True
    Else
        weltname2 = TextBox2.Text
        'Zip Vorgang starten
        BackgroundWorker1.RunWorkerAsync()
    End If
End Sub

FrogKnock

VB.NET/VB 2010/2008

Beiträge: 142

Dabei seit: 7. November 2010

Hilfreich-Bewertungen: 6

  • Private Nachricht senden

15

Freitag, 20. Mai 2011, 15:27

Hallo :)
Kann man auch noch eine Passwort-Abfrage einbauen, falls das archiv passwort gesichert ist?
MFG FrogKnock ;)

El3ctro

unregistriert

16

Sonntag, 26. Juni 2011, 16:19

Bei mir tut der nichts entpacken, zeigt aber auch keinen Fehler an

Gather

ObjectCore

  • »Gather« ist männlich

Beiträge: 1 022

Dabei seit: 21. April 2011

Wohnort: Schwechat

Hilfreich-Bewertungen: 274

  • Private Nachricht senden

17

Dienstag, 28. Juni 2011, 15:36

Könnte mir wer sagen, WO man hier angibt ob entpackt oder gepackt werden soll?
Mfg: Gather
Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


Die neuen MetroControls jetzt im Showroom!

nikeee13

Super-Moderator

  • »nikeee13« ist männlich

Beiträge: 1 371

Dabei seit: 20. Februar 2009

Hilfreich-Bewertungen: 1012

  • Private Nachricht senden

18

Donnerstag, 30. Juni 2011, 03:06

Visual Basic Quellcode

1
SevenZip.StartInfo.Arguments = "a C:\Testarchiv.zip C:\Datei1.txt C:\Datei2.txt"

Also wenn per Argument, dann bitte die Übergabepfade escapen, falls Whitespace im Pfad ist.

Visual Basic Quellcode

1
SevenZip.StartInfo.Arguments = String.Format("a {0}{1}{0} {0}{2}{0} {0}{3}{0}","""", targetFile, firstFile, secondFile)

Krschy

Fachinformatiker in Anwendungsentwicklung

  • »Krschy« ist männlich

Beiträge: 180

Dabei seit: 1. Mai 2010

Wohnort: Nürnberg

Frühere Benutzernamen: Krschy

Hilfreich-Bewertungen: 7

  • Private Nachricht senden

19

Freitag, 29. Juli 2011, 17:34

Hmm. Geht das auch ohne 7Zip u. Co zu haben.
Etwas interenes wie eine Dll mit einer API oder sowas in der Art.
Weil nicht jeder User hat immer 7Zip oder WinRar und so weiter..

Gibt es auch einen anderen Weg ?

nikeee13

Super-Moderator

  • »nikeee13« ist männlich

Beiträge: 1 371

Dabei seit: 20. Februar 2009

Hilfreich-Bewertungen: 1012

  • Private Nachricht senden

20

Freitag, 29. Juli 2011, 17:41

Weil nicht jeder User hat immer 7Zip oder WinRar und so weiter..

7z.exe und 7z.dll (als x86-Version) mitliefern?

Ähnliche Themen

Verwendete Tags

7-zip, 7zip, Dateien, entpacken, packen, Prozess, unzip, zip

Social Bookmarks