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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
Imports System.IO
Imports System.IO.Compression
Module Com_Unzip
Public UnzipString As String
Public Sub Unzip()
UnzipString = RawCommand.Substring(6)
If UnzipString Like "-d '*.zip'" Then
Dim UnzipEXE() As String = UnzipString.Split("''")
NewLine(UnzipEXE(1))
If File.Exists(Console.CurrentDirectory & "\" & UnzipEXE(1)) = True Then
Dim UnzipDir As String = UnzipEXE(1).Replace(".zip", "")
NewLine(UnzipDir)
Dim UnzipRandomInt As Integer
Dim UnzipRandom As New Random
UnzipRandomInt = UnzipRandom.Next(1, 1000000)
NewLine("Creating temporary place for selected archive...")
Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
NewLine("Extracting the file from a zip file...")
ZipFile.ExtractToDirectory(Console.CurrentDirectory & "\" & UnzipEXE(1), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
NewLine("Copying the extracted file into the current directory...")
Directory.CreateDirectory(Console.CurrentDirectory & "\" & UnzipDir)
CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, Console.CurrentDirectory & "\" & UnzipDir)
NewLine("Removing temporary place of the file...")
Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, True)
Else
End If
End If
If UnzipString Like "-f '*.zip'" Then
Dim UnzipEXE() As String = UnzipString.Split("''")
NewLine(UnzipEXE(1))
If File.Exists(Console.CurrentDirectory & "\" & UnzipEXE(1)) = True Then
Dim UnzipDir As String = UnzipEXE(1).Replace(".zip", "")
NewLine(UnzipDir)
Dim UnzipRandomInt As Integer
Dim UnzipRandom As New Random
UnzipRandomInt = UnzipRandom.Next(1, 1000000)
NewLine("Creating temporary place for selected archive...")
Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
NewLine("Extracting the file from a zip file...")
ZipFile.ExtractToDirectory(Console.CurrentDirectory & "\" & UnzipEXE(1), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
NewLine("Copying the extracted file into the current directory...")
Directory.CreateDirectory(Console.CurrentDirectory & "\" & UnzipDir)
CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, Console.CurrentDirectory)
NewLine("Removing temporary place of the file...")
Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, True)
Else
End If
End If
End Sub
Public Sub CopyDirectory(ByVal SourcePath As String, ByVal DestPath As String, Optional ByVal Overwrite As Boolean = False)
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
Dim DestDir As DirectoryInfo = New DirectoryInfo(DestPath)
' the source directory must exist, otherwise throw an exception
If SourceDir.Exists Then
' if destination SubDir's parent SubDir does not exist throw an exception
If Not DestDir.Parent.Exists Then
Throw New DirectoryNotFoundException _
("Destination directory does not exist: " + DestDir.Parent.FullName)
End If
If Not DestDir.Exists Then
DestDir.Create()
End If
' copy all the files of the current directory
Dim ChildFile As FileInfo
For Each ChildFile In SourceDir.GetFiles()
If Overwrite Then
ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), True)
Else
' if Overwrite = false, copy the file only if it does not exist
' this is done to avoid an IOException if a file already exists
' this way the other files can be copied anyway...
NewLine("Copying " & ChildFile.Name & "...")
If Not File.Exists(Path.Combine(DestDir.FullName, ChildFile.Name)) Then
ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), False)
End If
End If
Next
' copy all the sub-directories by recursively calling this same routine
Dim SubDir As DirectoryInfo
For Each SubDir In SourceDir.GetDirectories()
CopyDirectory(SubDir.FullName, Path.Combine(DestDir.FullName,
SubDir.Name), Overwrite)
Next
Else
Throw New DirectoryNotFoundException("Source directory does not exist: " + SourceDir.FullName)
End If
End Sub
End Module
|