commit 6ba488459042d68c0f786442329c00e55eeec75e Author: Florian Späth Date: Fri Jan 31 01:47:45 2025 +0100 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..efa5403 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.vscode +/log.txt \ No newline at end of file diff --git a/Cleaner-IconAdd/root.ps1 b/Cleaner-IconAdd/root.ps1 new file mode 100644 index 0000000..6d9b8ab --- /dev/null +++ b/Cleaner-IconAdd/root.ps1 @@ -0,0 +1,150 @@ +Add-Type -AssemblyName PresentationFramework +Add-Type -AssemblyName System.Windows.Forms +[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null + +function Load_root { + [xml]$Form = Get-Content "$PSScriptRoot\root.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + $Script:btncleaner = $window.FindName("btncleaner") + $Script:btnfile = $window.findName("btnfile") + $Script:btnok = $window.FindName("btnok") + $Script:tbcleaner = $window.FindName("tbcleaner") + $Script:tbfile = $window.FindName("tbfile") + $Script:cbo = $window.FindName("cbo") + $Script:cbb = $window.FindName("cbb") + $Script:cbv = $window.FindName("cbv") + $Script:cba = $window.FindName("cba") + return $window +} +$main = Load_root + +$Script:btncleaner.Add_Click({ + $Script:cleaner=Select-FolderDialog + if (test-path "$Script:cleaner\icons.csv") { + $Script:tbcleaner.Text = "Cleaner: $Script:Cleaner" + }else{ + $Script:tbcleaner.Text = "Cleaner: not valid" + } +}) +$Script:btnfile.Add_Click({ + $Script:file=Select-FileDialog + $Script:tbfile.Text = "Icon: $Script:file" +}) +$Script:btnok.Add_Click({ + $csv=import-csv path $Script:Cleaner\icons.csv + $type=$null + Write-host "$Script:file" + $name = get_icon $Script:file + Export-Icon -Path $Script:file -Destination "$Script:Cleaner\icons\$name.ico" + if ($cbo.IsSelected) { + $type=0 + }elseif ($cbb.IsSelected) { + $type=1 + }elseif ($cbv.IsSelected) { + $type=2 + }elseif ($cba.IsSelected) { + $type=3 + } + $id=($csv.ID[-1])+1 + $item = "$id,$name,$type" + $item | Export-Csv -Path "$Script:Cleaner\icons.csv" -Append + +}) +Function Select-FolderDialog{ + param([string]$Description="Zielverzeichnis wählen",[string]$RootFolder="Desktop") + [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |Out-Null + $objForm = New-Object System.Windows.Forms.FolderBrowserDialog + $objForm.Rootfolder = $RootFolder + $objForm.Description = $Description + $Show = $objForm.ShowDialog() + If ($Show -eq "OK"){ + Return $objForm.SelectedPath + }else{ + Return $false + } +} + +Function Select-FileDialog{ + [void] [System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') + $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog + if ($initialDirectory) { $OpenFileDialog.initialDirectory = $initialDirectory } + $OpenFileDialog.filter = 'All files (*.*)|*.*' + [void] $OpenFileDialog.ShowDialog() + return $OpenFileDialog.FileName +} + +function get_icon { + param ($data) + $data = $data -replace '\s','' + $found = $false + for ($c = -1; $c -gt -10; $c--) { + $char = $data[$c] + if ($char -eq ".") { + $trim=$data.Length+$c + $trimdata=$data.Remove(0,$trim+1) + $c=-10 + $found = $true + } + } + if (!$found) { + $return = 0 + }else { + $return=$trimdata + } + return $return +} + +function Export-Icon { + <# + .SYNOPSIS + Exports a file icon to a specified format. + .DESCRIPTION + Exports the icon associated with a while to a specified image format. + .NOTES + Author : Paul Broadwith (https://github.com/pauby) + History : 1.0 - 25/07/17 - Initial version. + .LINK + https://www.github.com/pauby + .EXAMPLE + Export-Icon -Path "C:\Windows\Notepad.exe" + + Exports the icon for "C:\Windows\Notepad.exe" and saves it in bitmap + (BMP) format to "Notepad.bmp" in the current current directory. + + .EXAMPLE + Export-Icon -Path "C:\Windows\Notepad.exe" ` + -Destination "C:\Temp\Notepad-Icon.jpg" -Format JPEG + + Exports the icon for "C:\Windows\Notepad.exe" and saves it in JPEG + format to "C:\Temp\Notepad-Icon.jpg" + #> + [CmdletBinding()] + Param ( + # Path of the source file the icon is to be exported from. + [Parameter(Mandatory=$true)] + [string]$Path, + + # Path to where the icon will be saved to. If this is blank or missing + # the file will be saved in the current directory with the basename of + # the $Path with the correct format extension. + [string]$Destination, + + # Format to save the icon as. Defaults to a bitmap (BMP). + [System.Drawing.Imaging.ImageFormat]$Format = "Bmp" + ) + + if (!$Destination) { + $basename = (Get-Item $Path).BaseName + $extension = $format.ToString().ToLower() + $Destination = "$basename.$extension" + } + + # Extract the icon from the source file. + $icon = [System.Drawing.Icon]::ExtractAssociatedIcon($Path) + + # Save the icon in the specified format + $icon.ToBitmap().Save($Destination, [System.Drawing.Imaging.ImageFormat]::$Format) + } + +$main.ShowDialog() | Out-Null \ No newline at end of file diff --git a/Cleaner-IconAdd/root.xaml b/Cleaner-IconAdd/root.xaml new file mode 100644 index 0000000..4305a3c --- /dev/null +++ b/Cleaner-IconAdd/root.xaml @@ -0,0 +1,35 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/GUIS/delconf/delconf.ps1 b/GUIS/delconf/delconf.ps1 new file mode 100644 index 0000000..9cfce2b --- /dev/null +++ b/GUIS/delconf/delconf.ps1 @@ -0,0 +1,18 @@ +function Load_delconf { + param ($root) + + # Lädt das Fenster + [xml]$Form = Get-Content "$PSScriptRoot\delconf.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Script:delconfsize = $window.FindName("tbdelsize") + $Script:delconfelements = $window.FindName("tbdeldata") + $Script:deltb = $window.FindName("tb_del") + $Script:movetb = $window.FindName("tb_move") + + return $window +} \ No newline at end of file diff --git a/GUIS/delconf/delconf.xaml b/GUIS/delconf/delconf.xaml new file mode 100644 index 0000000..d4ea2d9 --- /dev/null +++ b/GUIS/delconf/delconf.xaml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/GUIS/filter/filter.ps1 b/GUIS/filter/filter.ps1 new file mode 100644 index 0000000..837bdb2 --- /dev/null +++ b/GUIS/filter/filter.ps1 @@ -0,0 +1,128 @@ +function Load_filter { + param ($root) + + #0=Office;1=Bilder;2=Videos;3=Audios;4=Unterordner einbeziehen + $Script:filtercheck=@($false,$false,$false,$false,$false) + + # Lädt das Fenster + [xml]$Form = Get-Content "$PSScriptRoot\filter.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + $Office=$window.FindName("imgoffice") + $Bilder=$window.FindName("imgbilder") + $Videos=$window.FindName("imgvideos") + $Audios=$window.FindName("imgaudios") + $Script:Filteroffice = $window.FindName("btnoffice") + $Script:Filterbilder = $window.FindName("btnbilder") + $Script:Filtervideos = $window.FindName("btnvideos") + $Script:Filteraudios = $window.FindName("btnaudios") + $Script:filterok = $window.FindName("btnsetzen") + $Script:filterreset = $window.FindName("btnreset") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Office.Source = "$root/Source/Office.png" + $Bilder.Source = "$root/Source/Bild.png" + $Videos.Source = "$root/Source/Video.png" + $Audios.Source = "$root/Source/Audio.png" + + return $window +} + +function Reset_Filter { + #0=Office;1=Bilder;2=Videos;3=Audios;4=Unterordner einbeziehen + $Script:filtercheck=@($false,$false,$false,$false,$false) + $Filteroffice.background = "#444444" + $Filterbilder.background = "#444444" + $Filtervideos.background = "#444444" + $Filteraudios.background = "#444444" + $mainimgswitch.Source = "$ScriptRoot/Source/swfalse.png" +} + +function Filter_data { + param($tag) + $Script:data = @() + main_loading $true + Filter_deep $tag + main_loading $false + $item = [System.Windows.Data.ListCollectionView]$Script:data + $mainbrowser.Remove + $mainbrowser.ItemsSource = $item +} + +function Filter_deep { + param ($tag) + #Log "### Main: Filter deep ###" -clear + $folder = $Script:folderdb[$tag] + for ($i = 5; $i -lt $folder.count; $i++) { + if ($folder[$i] -match "f") { + if ($Script:filtercheck[4]) { + $string=$folder[$i].Substring(1) + $int = [int]$string + if (!$Script:folderdb[$int][4]) { + Filter_deep $int + } + } + }else { + if (!$Script:filedb[$folder[$i]][4]) { + for ($t = 0; $t -lt 3; $t++) { + if ($Script:filtercheck[$t]) { + for ($ti = 0; $ti -lt $Script:types[$t].Count; $ti++) { + if ($Script:types[$t][$ti] -eq $Script:filedb[$folder[$i]][5]) { + if ($Script:filedb[$folder[$i]][3]) { + $cp = "$Script:ScriptRoot\Source\checked.png" + }else { + $cp = "$Script:ScriptRoot\Source\unchecked.png" + } + $Length = calc_Size $Script:filedb[$folder[$i]][1] + $icon = $Script:icontypes[$Script:filedb[$folder[$i]][5]] + $Script:data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\icons\$icon.ico";Name=$Script:filedb[$folder[$i]][0];Size="$Length";Tag=$folder[$i];SourceChecked="$cp"} + Write-Host $Script:filedb[$folder[$i]][0] + } + [System.Windows.Forms.Application]::DoEvents() + } + } + [System.Windows.Forms.Application]::DoEvents() + } + } + } + [System.Windows.Forms.Application]::DoEvents() + } + return $data +} + +function Update_Filter { + $ok = @($true,$true,$true,$true) + $btnname = @("Office","Bilder","Videos","Audios") + $Script:mainchoosen1.Content = $null + $Script:mainchoosen2.Content = $null + $Script:mainchoosen3.Content = $null + $Script:mainchoosen4.Content = $null + for ($i = 0; $i -lt 4; $i++) { + if ($Script:filtercheck[$i]) { + if ($ok[0]) { + $Script:mainchoosen1.Content = "- "+$btnname[$i] + $ok[0] = $false + #Log "### Filter "+$btnname[$i]+" gesetzt ###" -clear + }elseif ($ok[1]) { + $Script:mainchoosen2.Content = "- "+$btnname[$i] + $ok[1] = $false + #Log "### Filter "+$btnname[$i]+" gesetzt ###" -clear + }elseif ($ok[2]) { + $Script:mainchoosen3.Content = "- "+$btnname[$i] + $ok[2] = $false + #Log "### Filter "+$btnname[$i]+" gesetzt ###" -clear + }elseif ($ok[3]) { + $Script:mainchoosen4.Content = "- "+$btnname[$i] + $ok[3] = $false + #Log "### Filter "+$btnname[$i]+" gesetzt ###" -clear + } + } + [System.Windows.Forms.Application]::DoEvents() + } +} + +#Log "### Filter geladen ###" -clear \ No newline at end of file diff --git a/GUIS/filter/filter.xaml b/GUIS/filter/filter.xaml new file mode 100644 index 0000000..81b0686 --- /dev/null +++ b/GUIS/filter/filter.xaml @@ -0,0 +1,54 @@ + + + + + + + + + \ No newline at end of file diff --git a/GUIS/info/info.ps1 b/GUIS/info/info.ps1 new file mode 100644 index 0000000..f29e68f --- /dev/null +++ b/GUIS/info/info.ps1 @@ -0,0 +1,20 @@ +function Load_info { + param ($root) + + # Lädt das Fenster + [xml]$Form = Get-Content "$PSScriptRoot\info.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $text = $window.FindName("text") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $text.Text = "Der Speicherbedarf auf Gruppenlaufwerken, insbesondere aber auf persönlichen Home-Laufwerken steigt stetig. Daher muss jährlich ein hoher Betrag in die Erweiterung und die Erneuerung von Speichersystemen investiert werden. + Gleichzeitig soll im BR die Zusammenarbeit durch das Teilen von Informationen, Dokumenten und Content verbessert werden. Persönliche und damit exklusive Inhalte und Daten sind dabei kontraproduktiv. Dies gilt vor allem für den produzierten Mediencontent. + Mit diesem Werkzeug können Sie den zu löschenden oder zu verschiebenden Inhalt leichter identifizieren. `n`n$Script:Version `nCopyright Bayerischer Rundfunk (2022)`nAutor: Florian Späth `nDSGVO-konform" + return $window +} \ No newline at end of file diff --git a/GUIS/info/info.xaml b/GUIS/info/info.xaml new file mode 100644 index 0000000..710bdff --- /dev/null +++ b/GUIS/info/info.xaml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/GUIS/main/main.ps1 b/GUIS/main/main.ps1 new file mode 100644 index 0000000..4b5692a --- /dev/null +++ b/GUIS/main/main.ps1 @@ -0,0 +1,520 @@ +function Load_main { + param ($root) + + # Arraydefinition + ## 0=Name,1=Größe,2=checked,3=$false->Name $true->Größe + $Script:sortmain=@("up","up",$false, $false) + + # XAML Fenster + + [XML]$Form = @" + + + + + + + + + + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + + # Objekt - Variablen Verknüpfung + $pb = $window.findName("pb") + $Laufwerk = $window.findName("Laufwerk") + $Script:mainimgswitch = $window.findName("imgswitch") + $imginfo = $window.findName("imginfo") + $Script:mainelements = $window.findName("elemente") + $Script:mainsize = $window.findName("size") + $Script:bar = $window.findName("pbbar") + $Script:last = $window.findName("tblaufwerkauslastung") + $Script:maintree = $window.findName("treeview") + $Script:mainbrowser = $window.findName("browser") + $Script:mainscanner = $window.findName("btnScanner") + $Script:mainfilter = $window.findName("btnchoosefilter") + $Script:maininfo = $window.findName("btninfo") + $Script:mainloading = $window.findName("pbLoading") + $Script:mainswitch = $window.findName("btnfiltersw") + $Script:maindel = $window.findName("btndel") + $Script:mainmove = $window.findName("btnmove") + $Script:mainsortname = $window.findName("btnsortname") + $Script:mainsortsize = $window.findName("btnsortsize") + $Script:maincheckall = $window.findName("btncheckbox") + $Script:mainchoosen1 = $window.findName("choosen1") + $Script:mainchoosen2 = $window.findName("choosen2") + $Script:mainchoosen3 = $window.findName("choosen3") + $Script:mainchoosen4 = $window.findName("choosen4") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Laufwerk.Source = "$root/Source/HDD1.png" + $mainimgswitch.Source = "$root/Source/swfalse.png" + $imginfo.Source = "$root/Source/info.png" + $mainelements.Text = " 0 Elemente" + $mainsize.Text = " 0 MB" + + ### GIF Sanduhr + $file = (get-item "$root/Source/mainhourglas.gif") + $img = [System.Drawing.Image]::Fromfile($file); + $pb.Image = $img + + return $window +} + +function Set_Defaults_Main { + param ($array) + if (!$array[5]) { + $Script:bar.Value=$array[4] + $Script:last.Text=$array[0] + }else{ + $Script:last.Text="OFFLINE" + } +} + +function Get_TreeView { + $maintree.Items.Clear() + $RootItem = New-Object System.Windows.Controls.TreeViewItem + $RootItem.Header = $Script:folderdb[0][0] + $RootItem.Tag = 0 + for ($i = 5; $i -lt $Script:folderdb[0].count; $i++) { + if ($Script:folderdb[0][$i].contains("f")) { + $item=$Script:folderdb[0][$i].Substring(1) + Get_TreeViewExpand $RootItem $item + } + [System.Windows.Forms.Application]::DoEvents() + } + $maintree.Items.Add($RootItem) +} + +function Get_TreeViewExpand { + param ($parentItem, $Folder) + $int = [int]$Folder + if (!$Script:folderdb[$int][4]) { + $subItem = New-Object System.Windows.Controls.TreeViewItem + $subItem.Header = $Script:folderdb[$int][0] + $subItem.Tag = $int + [void]$parentItem.Items.Add($subItem) + for ($i = 5; $i -lt $Script:folderdb[$int].count; $i++) { + if ($Script:folderdb[$int][$i] -match "f") { + $item=$Script:folderdb[$int][$i].Substring(1) + Get_TreeViewExpand $subItem $item + } + [System.Windows.Forms.Application]::DoEvents() + } + } +} + +function Browser_Path { + param ($path) + $data = @() + $c=$false + #Log "Tree $path" -clear + for ($t = 0; $t -lt 3; $t++) { + if ($Script:filtercheck[$t]) { + $c=$true + } + [System.Windows.Forms.Application]::DoEvents() + } + if ($c) { + Filter_data $path + }else { + for ($i = 5; $i -lt $Script:folderdb[$path].count; $i++) { + if ($Script:folderdb[$path][$i] -match "f") { + $string=$Script:folderdb[$path][$i].Substring(1) + $int = [int]$string + if (!$Script:folderdb[$int][4]) { + if ($Script:folderdb[$int][3]) { + $cp = "$Script:ScriptRoot\Source\checked.png" + }else { + $cp = "$Script:ScriptRoot\Source\unchecked.png" + } + $Length = calc_Size $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\Source\Folder.png";Name=$Script:folderdb[$int][0];Size="$Length";Tag=$Script:folderdb[$path][$i];SourceChecked="$cp"} + } + }else { + if (!$Script:filedb[$Script:folderdb[$path][$i]][4]) { + if ($Script:filedb[$Script:folderdb[$path][$i]][3]) { + $cp = "$Script:ScriptRoot\Source\checked.png" + }else { + $cp = "$Script:ScriptRoot\Source\unchecked.png" + } + $Length = calc_Size $Script:filedb[$Script:folderdb[$path][$i]][1] + $icon = $Script:icontypes[$Script:filedb[$Script:folderdb[$path][$i]][5]] + $data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\icons\$icon.ico";Name=$Script:filedb[$Script:folderdb[$path][$i]][0];Size="$Length";Tag=$Script:folderdb[$path][$i];SourceChecked="$cp"} + } + } + [System.Windows.Forms.Application]::DoEvents() + #$logcontent = "Main: Browser " + $Script:folderdb[$path][$i] + #Log $logcontent -clear + } + $item = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.Remove + $mainbrowser.ItemsSource = $item + } +} + +function Check_Browser { + param ($tag) + $data = @() + for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { + if (($mainbrowser.Items.Tag[$i] -eq $tag) -or ($mainbrowser.Items.Count -eq 1)) { + $item=$mainbrowser.Items[$i] + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if ($Script:folderdb[$int][3]) { + $Script:folderdb[$int][3]=$false + count_element $false $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + }else { + $Script:folderdb[$int][3]=$true + count_element $true $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + } + }else { + if ($Script:filedb[$tag][3]) { + $Script:filedb[$tag][3]=$false + count_element $false $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + }else { + $Script:filedb[$tag][3]=$true + count_element $true $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + } + } + }else { + $data += $mainbrowser.Items[$i] + } + [System.Windows.Forms.Application]::DoEvents() + } + $item = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.Remove + $mainbrowser.ItemsSource = $item +} + +function main_sortname{ + param([switch]$change) + $data= @() + if ($change) { + if ($sortmain[0] -eq "up") { + $sortmain[0]="down" + }else { + $sortmain[0]="up" + } + } + for ($i = 0; $i -lt $mainbrowser.Items.count; $i++) { + $item = $mainbrowser.Items[$i] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$item.Checked;Tag=$item.Tag;SourceChecked=$Item.SourceChecked} + [System.Windows.Forms.Application]::DoEvents() + } + if ($sortmain[0] -eq "up") { + $data = $data | Sort-Object -Property Name + }else { + $data = $data | Sort-Object -Property Name -Descending + } + $sortmain[3]=$false + $ItemList = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.ItemsSource = $ItemList +} + +function main_sortsize { + param([switch]$change) + if ($change) { + if ($sortmain[1] -eq "up") { + $sortmain[1]="down" + }else { + $sortmain[1]="up" + } + } + $data=@() + $array=@() + for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { + $item = $mainbrowser.Items[$i] + if ($item.Size.EndsWith("GB")) { + $stringtrim = $item.Size.TrimEnd(" GB") + $int = [int]$stringtrim + $int = $int + 1000000 + }elseif ($item.Size.EndsWith("MB")) { + $stringtrim = $item.Size.TrimEnd(" MB") + $int = [int]$stringtrim + $int = $int + 1000 + }else { + $stringtrim = $item.Size.TrimEnd(" KB") + $int = [int]$stringtrim + } + $array += New-Object PSObject -prop @{Tag=$item.Tag;Size=$int} + [System.Windows.Forms.Application]::DoEvents() + } + if ($sortmain[1] -eq "up") { + $array = $array | Sort-Object -Property Size + }else { + $array = $array | Sort-Object -Property Size -Descending + } + for ($i = 0; $i -lt $array.Count; $i++) { + for ($e = 0; $e -lt $mainbrowser.items.Count; $e++) { + if ($array.Tag[$i] -eq $mainbrowser.Items.Tag[$e]) { + $item=$mainbrowser.Items[$e] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$item.Checked;Tag=$item.Tag;SourceChecked=$Item.SourceChecked} + $e=$mainbrowser.items.Count + } + [System.Windows.Forms.Application]::DoEvents() + } + [System.Windows.Forms.Application]::DoEvents() + } + $sortmain[3]=$true + $ItemList = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.Remove + $mainbrowser.ItemsSource = $ItemList +} + +function main_checkall { + $data = @() + $check = 0 + if ($sortmain[2]) { + $sortmain[2]=$false + for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { + $item = $mainbrowser.Items[$i] + $tag=$item.Tag + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if ($folderdb[$int][3]) { + $folderdb[$int][3]=$false + count_element $false $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$false;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + $check++ + }else { + $data += $item + } + }else { + if ($filedb[$tag][3]) { + $filedb[$tag][3]=$false + count_element $false $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$false;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + $check++ + }else { + $data += $item + } + } + [System.Windows.Forms.Application]::DoEvents() + } + }else { + $sortmain[2]=$true + for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { + $item = $mainbrowser.Items[$i] + $tag=$item.Tag + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if (!$folderdb[$int][3]) { + $folderdb[$int][3]=$true + count_element $true $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$true;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + $check++ + }else { + $data += $item + } + }else { + if (!$filedb[$tag][3]) { + $filedb[$tag][3]=$true + count_element $true $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$true;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + $check++ + }else { + $data += $item + } + } + [System.Windows.Forms.Application]::DoEvents() + } + } + if ($check -eq 0) { + main_checkall + }else{ + $ItemList = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.ItemsSource = $ItemList + } +} + +function main_loading { + param ($stat) + if($stat){ + $Script:mainloading.Visibility = "Visible" + $Script:maininfo.Visibility = "Hidden" + }else { + $Script:mainloading.Visibility = "Hidden" + $Script:maininfo.Visibility = "Visible" + } +} + +Function Select-FolderDialog{ + param([string]$Description="Zielverzeichnis wählen",[string]$RootFolder="Desktop") + [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |Out-Null + $objForm = New-Object System.Windows.Forms.FolderBrowserDialog + $objForm.Rootfolder = $RootFolder + $objForm.Description = $Description + $Show = $objForm.ShowDialog() + If ($Show -eq "OK"){ + Return $objForm.SelectedPath + }else{ + Return $false + } +} + +#Log "### Main geladen ###" -clear \ No newline at end of file diff --git a/GUIS/scanner/scanner.ps1 b/GUIS/scanner/scanner.ps1 new file mode 100644 index 0000000..0373c8a --- /dev/null +++ b/GUIS/scanner/scanner.ps1 @@ -0,0 +1,254 @@ + +#0=ScanAktiv; +$Script:switch=@($false,$false) +function Load_scanner { + param ($root) + + # Lädt das Fenster + [xml]$Form = Get-Content "$PSScriptRoot\scanner.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + $pb=$window.findName("pb") + $Logo=$window.findName("Logo") + $Laufwerk=$window.findName("Laufwerk") + $Script:bar = $window.FindName("pbbar") + $Script:offline = $window.findName("Offline") + $Script:gesamt = $window.FindName("tbgesamt") + $Script:belegt = $window.FindName("tbbelegt") + $Script:scantxt = $window.findName("Scantxt") + $Script:pbloading = $window.findName("pbLoading") + $Script:scannerscan = $window.findName("btnscan") + $Script:scanlb = $window.findName("lbanalyse1") + $Script:POOP_AIDS_COPY = $window.findName("lbanalyse2") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Logo.Source="$root/Source/Logowhite.png" + $Laufwerk.Source="$root/Source/HDD1.png" + + ### GIF Sanduhr + $file = (get-item "$root/Source/hourglas.gif") + $img = [System.Drawing.Image]::Fromfile($file); + $pb.Image = $img + + return $window +} + +function Scan_Label_Swtich { + param( + [switch]$scan + ) + if (!$scan) { + $Script:scanlb.Visibility="Visible" + $Script:POOP_AIDS_COPY.Visibility="Hidden" + }else{ + $Script:scanlb.Visibility="Hidden" + $Script:POOP_AIDS_COPY.Visibility="Visible" + } +} + +function Set_Defaults_Scanner { + param ($array) + if (!$array[5]) { + $Script:H_Size=$array[4] + $Script:bar.Value=$Script:H_Size + $Script:gesamt.Text=$Array[2] + $script:belegt.Text=$array[3] + }else{ + $Script:offline.Visibility="Visible" + } +} + +function Start_Scan { + param () + if (!$Script:switch[0]) { + Scan_Label_Swtich -scan + $Script:switch[0]=$true + Init_Scan_Process + #Log "### Start Scan ###" -clear + #### Variablen Deklaration Script #### + #0=Ordner;1=Datei + $Script:counter=@(0,0) + $Script:Scan_prozess = 0 + + $Script:belegt.Visibility="Hidden" + $Script:bar.Foreground="#008000" + $Script:scantxt.Visibility="Visible" + $Script:pbloading.Visibility="Visible" + $Script:scannerscan.Content="Abbrechen" + $Script:scannerscan.background="$Script:Delcolor" + + renew_DB + start_create_database + Add_Root_Folder_Size + Get_TreeView + Browser_Path -path 0 + + $maintree.Items[0].IsExpanded = $true + $maintree.Items[0].IsSelected = $true + if ($Script:switch[0]) { + $Script:switch[0]=$false + $Script:bar.Foreground="#00b8d4" + $Script:scantxt.Visibility="Hidden" + $Script:pbloading.Visibility="Hidden" + $Script:scannerscan.Content="Scannen" + $Script:belegt.Visibility="Visible" + $Script:bar.Value=$Script:H_Size + $Script:Scan_prozess = 0 + Scan_process + Scan_Label_Swtich + $Script:scannerscan.background="$Script:Standardbtncolor" + $Script:scanner.hide() + + #Log "### Scan fertig ###" -clear + $Script:main.ShowDialog() | Out-Null + } + }else { + $Script:switch[0]=$false + $Script:bar.Foreground="#00b8d4" + $Script:scantxt.Visibility="Hidden" + $Script:pbloading.Visibility="Hidden" + $Script:scannerscan.Content="Scannen" + $Script:belegt.Visibility="Visible" + $Script:bar.Value=$Script:H_Size + Scan_Label_Swtich + $Script:scannerscan.background="$Script:Standardbtncolor" + } +} + +function renew_DB { + #Log "### Datenbank zurückgesetzt ###" -clear + $Script:folderdb = @{ + Legende = @("Name","Größe","Pfad","Checked","Deleted","Vorgänger","Inhalt") + } + $Script:filedb = @{ + Legende = @("Name","Größe","Pfad","Checked","Deleted","Endung") + } +} + +function Init_Scan_Process{ + $Script:Scan_prozess = 0 + $Scan_exclude_percent = 0.85 + $Script:Scan_used_exclude=$Script:used*$Scan_exclude_percent +} + +function Scan_Process { + param ($Item) + $Scan_Percent=0 + $Script:Scan_Prozess=$Script:Scan_Prozess+$Item + if ($Script:Scan_Prozess -gt $Script:Scan_used_exclude) { + $Scan_Percent = ($Script:Scan_Prozess/$Script:used)*100 + }else{ + $Scan_Percent = ($Script:Scan_Prozess/$Script:Scan_used_exclude)*100 + } + $Script:bar.Value = $Scan_Percent + #Log "Scan prozess: $Scan_Percent" -clear + #Log "$Script:used $Script:Scan_Prozess" -clear +} + +function start_create_database { + param () + $collection = Get-ChildItem -path G:\ -Directory + $Script:folderdb[$Script:counter[0]] = @("H-Laufwerk",1,"H:",$false,$false) + create_file_database "H:" + foreach ($item in $collection){ + $Script:switch[1]=$false + foreach ($itemex in $Script:exclude){ + if ($item.FullName -eq $itemex) { + $Script:switch[1]=$true + } + [System.Windows.Forms.Application]::DoEvents() + } + if (!$Script:switch[1] -and $Script:switch[0]) { + $Script:counter[0]++ + $Script:folderdb[$Script:counter[0]] = @($item.Name,$item.length,$item.FullName,$false,$false) + $Script:folderdb[0] += "f"+$Script:counter[0] + create_file_database $item.FullName + create_folder_database $item.FullName $Script:counter[0] + [System.Windows.Forms.Application]::DoEvents() + } + [System.Windows.Forms.Application]::DoEvents() + } +} + +function create_folder_database { + param ($folder,$davor) + if ($Script:switch[0]) { + $collection = Get-ChildItem -path $folder -Directory + foreach ($item in $collection){ + $Script:counter[0]++ + $Script:folderdb[$Script:counter[0]] = @($item.Name,$item.length,$item.FullName,$false,$false) + $text = " " + $Script:counter[0] + " " + $Script:folderdb[$Script:counter[0]] + #Log $text + $Script:folderdb[$davor] += "f"+$Script:counter[0] + create_file_database $item.FullName + create_folder_database $item.FullName $Script:counter[0] + [System.Windows.Forms.Application]::DoEvents() + } + } +} + +function create_file_database { + param ($folder) + $collection = Get-ChildItem -path $folder -File + foreach ($item in $collection) { + $Script:filedb[$Script:counter[1]] = @($item.Name,$item.length,$item.FullName,$false,$false,(get_icon $item.Name)) + Scan_Process $item.length + $text = " " + $Script:counter[1] + " " + $Script:filedb[$Script:counter[1]] + #Log $text + $Script:folderdb[$Script:counter[0]] += $Script:counter[1] + $Script:counter[1]++ + [System.Windows.Forms.Application]::DoEvents() + } +} + +function Add_Root_Folder_Size { + $size=0 + for ($i = 5; $i -lt $Script:folderdb[0].count; $i++) { + if ($Script:folderdb[0][$i] -match "f") { + $size=$size+(Add_Folder_Size $Script:folderdb[0][$i]) + }else { + $size=$size+$Script:filedb[$Script:folderdb[0][$i]][1] + } + [System.Windows.Forms.Application]::DoEvents() + } + $Script:folderdb[0][1]=$Size +} + +function Add_Folder_Size { + param ($Folder) + $string=$Folder.Substring(1) + $Folder = [int]$string + $size=0 + for ($i = 5; $i -lt $Script:folderdb[$Folder].count; $i++) { + if ($Script:folderdb[$Folder][$i] -match "f") { + $size=$size+(Add_Folder_Size $Script:folderdb[$Folder][$i]) + }else { + $size=$size+$Script:filedb[$Script:folderdb[$Folder][$i]][1] + } + [System.Windows.Forms.Application]::DoEvents() + } + $Script:folderdb[$Folder][1]=$size + return $size +} + +function get_icon { + param ($data) + if ($data -match '.') { + $trimdata = (($data.Split('.'))[1]).ToLower() + $index=[array]::indexof($icontypes,$trimdata) + if ($index -eq -1) { + $return = -1 + }else{ + $return = $index + } + return $return + }else{ + return $data + } +} + +#Log "### Scanner geladen ###" -clear \ No newline at end of file diff --git a/GUIS/scanner/scanner.xaml b/GUIS/scanner/scanner.xaml new file mode 100644 index 0000000..661c59c --- /dev/null +++ b/GUIS/scanner/scanner.xaml @@ -0,0 +1,53 @@ + + + + + + \ No newline at end of file diff --git a/H-Cleaner v1.0.0.zip b/H-Cleaner v1.0.0.zip new file mode 100644 index 0000000..654ccb2 Binary files /dev/null and b/H-Cleaner v1.0.0.zip differ diff --git a/H-Cleaner.exe b/H-Cleaner.exe new file mode 100644 index 0000000..e5c7416 Binary files /dev/null and b/H-Cleaner.exe differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..43f787b --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# H-Cleaner + +### !!!Das Programm ist scharf geschaltet. Dateien und Ordner werden verschoben und gelöscht!!! + +# Installation + +Um den H-Cleaner zu benutzen den Zip Ordner herunterladen und entpacken. Um das Programm zu Starten lediglich die H-Cleaner.exe ausführen. + +# Bugs + +Bekannte Bugs sind als Tickets im GitLab hinterlegt. + diff --git a/ScanBSP.ps1 b/ScanBSP.ps1 new file mode 100644 index 0000000..290ab5b --- /dev/null +++ b/ScanBSP.ps1 @@ -0,0 +1,32 @@ +#Scan Funktion vereinfacht dargestellt + +$Start=Get-Date +Get-Childitem H:\ -Recurse | Format-Table -property FullName +$Stamp=Get-Date +function null { + $collection = Get-ChildItem -path H:\ -Directory + foreach ($item in $collection) { + Write-Host $item.FullName + eins $item.fullname + zwei $item.FullName + } +} +function eins { + param($folder) + $collection = Get-ChildItem -path $folder -File + foreach ($item in $collection){ + Write-Host $item.FullName + } +} +function zwei { + param($folder) + $collection = Get-ChildItem -path $folder -Directory + foreach ($item in $collection){ + Write-Host $item.FullName + eins $item.FullName + zwei $item.FullName + } +} +null +$Finish=Get-Date +Write-Host "Start: $Start Zwischenzeit: $Stamp Ende: $Finish" diff --git a/Source/Archiv.png b/Source/Archiv.png new file mode 100644 index 0000000..b94c2ec Binary files /dev/null and b/Source/Archiv.png differ diff --git a/Source/Audio.png b/Source/Audio.png new file mode 100644 index 0000000..4bc0a89 Binary files /dev/null and b/Source/Audio.png differ diff --git a/Source/Bild.png b/Source/Bild.png new file mode 100644 index 0000000..dd648fe Binary files /dev/null and b/Source/Bild.png differ diff --git a/Source/Checked.png b/Source/Checked.png new file mode 100644 index 0000000..f675390 Binary files /dev/null and b/Source/Checked.png differ diff --git a/Source/Container.png b/Source/Container.png new file mode 100644 index 0000000..50f2270 Binary files /dev/null and b/Source/Container.png differ diff --git a/Source/Datenbank.png b/Source/Datenbank.png new file mode 100644 index 0000000..0676d8f Binary files /dev/null and b/Source/Datenbank.png differ diff --git a/Source/Folder.png b/Source/Folder.png new file mode 100644 index 0000000..bd668c8 Binary files /dev/null and b/Source/Folder.png differ diff --git a/Source/HDD1.png b/Source/HDD1.png new file mode 100644 index 0000000..68f4e83 Binary files /dev/null and b/Source/HDD1.png differ diff --git a/Source/Internet.png b/Source/Internet.png new file mode 100644 index 0000000..7041bd3 Binary files /dev/null and b/Source/Internet.png differ diff --git a/Source/Kofig.png b/Source/Kofig.png new file mode 100644 index 0000000..a29e075 Binary files /dev/null and b/Source/Kofig.png differ diff --git a/Source/Logo-alt.PNG b/Source/Logo-alt.PNG new file mode 100644 index 0000000..5589b29 Binary files /dev/null and b/Source/Logo-alt.PNG differ diff --git a/Source/Logo.PNG b/Source/Logo.PNG new file mode 100644 index 0000000..d4468f1 Binary files /dev/null and b/Source/Logo.PNG differ diff --git a/Source/Logowhite.png b/Source/Logowhite.png new file mode 100644 index 0000000..c4fc107 Binary files /dev/null and b/Source/Logowhite.png differ diff --git a/Source/Mail.png b/Source/Mail.png new file mode 100644 index 0000000..1d719a6 Binary files /dev/null and b/Source/Mail.png differ diff --git a/Source/Mails.png b/Source/Mails.png new file mode 100644 index 0000000..79c6514 Binary files /dev/null and b/Source/Mails.png differ diff --git a/Source/Office.png b/Source/Office.png new file mode 100644 index 0000000..672dc3a Binary files /dev/null and b/Source/Office.png differ diff --git a/Source/Softwareentwicklung.png b/Source/Softwareentwicklung.png new file mode 100644 index 0000000..675f8b0 Binary files /dev/null and b/Source/Softwareentwicklung.png differ diff --git a/Source/Sonstiges.png b/Source/Sonstiges.png new file mode 100644 index 0000000..a6075a5 Binary files /dev/null and b/Source/Sonstiges.png differ diff --git a/Source/Texte-Logs.png b/Source/Texte-Logs.png new file mode 100644 index 0000000..8ecc2ac Binary files /dev/null and b/Source/Texte-Logs.png differ diff --git a/Source/Unchecked.png b/Source/Unchecked.png new file mode 100644 index 0000000..196b830 Binary files /dev/null and b/Source/Unchecked.png differ diff --git a/Source/Video.png b/Source/Video.png new file mode 100644 index 0000000..79d5ca2 Binary files /dev/null and b/Source/Video.png differ diff --git a/Source/hourglas.gif b/Source/hourglas.gif new file mode 100644 index 0000000..d3ca882 Binary files /dev/null and b/Source/hourglas.gif differ diff --git a/Source/hourglas_original.gif b/Source/hourglas_original.gif new file mode 100644 index 0000000..2a17e40 Binary files /dev/null and b/Source/hourglas_original.gif differ diff --git a/Source/info.png b/Source/info.png new file mode 100644 index 0000000..46a158e Binary files /dev/null and b/Source/info.png differ diff --git a/Source/loading.gif b/Source/loading.gif new file mode 100644 index 0000000..cde62a2 Binary files /dev/null and b/Source/loading.gif differ diff --git a/Source/mainhourglas.gif b/Source/mainhourglas.gif new file mode 100644 index 0000000..ab72f06 Binary files /dev/null and b/Source/mainhourglas.gif differ diff --git a/Source/marked.png b/Source/marked.png new file mode 100644 index 0000000..d9483e9 Binary files /dev/null and b/Source/marked.png differ diff --git a/Source/swfalse.png b/Source/swfalse.png new file mode 100644 index 0000000..70882ee Binary files /dev/null and b/Source/swfalse.png differ diff --git a/Source/swtrue.png b/Source/swtrue.png new file mode 100644 index 0000000..7ecfbed Binary files /dev/null and b/Source/swtrue.png differ diff --git a/Start.ps1 b/Start.ps1 new file mode 100644 index 0000000..407a72e --- /dev/null +++ b/Start.ps1 @@ -0,0 +1 @@ +.\root.ps1 \ No newline at end of file diff --git a/Test/Dokumentation H-Cleaner.pdf b/Test/Dokumentation H-Cleaner.pdf new file mode 100644 index 0000000..c123bf9 Binary files /dev/null and b/Test/Dokumentation H-Cleaner.pdf differ diff --git a/Test/GUIS/del/del.ps1 b/Test/GUIS/del/del.ps1 new file mode 100644 index 0000000..3ee97b4 --- /dev/null +++ b/Test/GUIS/del/del.ps1 @@ -0,0 +1,283 @@ +function Load_del { + param ($root) + + # Speichert ob gelöscht oder verschoben werden soll + $Script:whattodo="" + + # Arraydefinition + ## 0=Name,1=Größe,2=checked + $Script:sortdel=@("up","up",$false) + + # Lädt das Fenster + [xml]$Form = Get-Content "$root/GUIS/del/del.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + $pb=$window.findName("pb") + $Script:Delbrowser = $window.findName("browser") + $Script:Delback = $window.findName("btnback") + $Script:Deldel = $window.findName("btnDeleteAll") + $Script:Delwarning = $window.findName("warning") + $Script:Delmarked = $window.findName("marked") + $Script:Delstats = $window.findName("stats") + $Script:Delsortname = $window.findName("btnsortname") + $Script:Delsortsize = $window.findName("btnsortsize") + $Script:Delcheckall = $window.findName("btncheckbox") + + # Verknüpft feste Elemente + $window.icon="$root/Source/Logo.png" + + ### GIF Sanduhr + $file = (get-item "$root/Source/hourglas.gif") + $img = [System.Drawing.Image]::Fromfile($file); + $pb.Image = $img + + return $window +} + +function Browser_del { + $data = @() + for ($i = 0; $i -lt $Script:folderdb.Count; $i++) { + if ($Script:folderdb[$i][3]) { + if (!$Script:folderdb[$i][4]) { + $Length = calc_Size $Script:folderdb[$i][1] + $data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\Source\Folder.png";Name=$Script:folderdb[$i][0];Size="$Length";Tag="f$i";SourceChecked="$Script:ScriptRoot\Source\checked.png";Path=$Script:folderdb[$i][2]} + $logcontent = "Del: Browser f" + $i + Log $logcontent -clear + } + } + [System.Windows.Forms.Application]::DoEvents() + } + for ($i = 0; $i -lt $filedb.Count; $i++) { + if ($Script:filedb[$i][3]) { + if (!$Script:filedb[$i][4]) { + $Length = calc_Size $Script:filedb[$i][1] + $icon = $Script:icontypes[$Script:filedb[$i][5]] + $data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\icons\$icon.ico";Name=$Script:filedb[$i][0];Size="$Length";Tag=$i;SourceChecked="$Script:ScriptRoot\Source\checked.png";Path=$Script:filedb[$i][2]} + $logcontent = "Del: Browser " + $i + Log $logcontent -clear + } + } + [System.Windows.Forms.Application]::DoEvents() + } + $item = [System.Windows.Data.ListCollectionView]$data + $Script:Delbrowser.Remove + $Script:Delbrowser.ItemsSource = $item +} + +function Check_Del { + param ($tag) + $data = @() + for ($i = 0; $i -lt $delbrowser.Items.Count; $i++) { + if (($delbrowser.Items.Tag[$i] -eq $tag) -or ($delbrowser.Items.Count -eq 1)) { + $item=$delbrowser.Items[$i] + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if ($Script:folderdb[$int][3]) { + $Script:folderdb[$int][3]=$false + count_element $false $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png";Path=$item.Path} + }else { + $Script:folderdb[$int][3]=$true + count_element $true $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png";Path=$item.Path} + } + }else { + if ($Script:filedb[$tag][3]) { + $Script:filedb[$tag][3]=$false + count_element $false $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png";Path=$item.Path} + }else { + $Script:filedb[$tag][3]=$true + count_element $true $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png";Path=$item.Path} + } + } + }else { + $data += $delbrowser.Items[$i] + } + [System.Windows.Forms.Application]::DoEvents() + } + $item = [System.Windows.Data.ListCollectionView]$data + $delbrowser.Remove + $delbrowser.ItemsSource = $item +} + +function del_sortname{ + Log "### Del: sort name ###" -clear + $data= @() + for ($i = 0; $i -lt $delbrowser.Items.count; $i++) { + $item = $delbrowser.Items[$i] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$item.Checked;Tag=$item.Tag;SourceChecked=$Item.SourceChecked;Path=$item.Path} + [System.Windows.Forms.Application]::DoEvents() + } + if ($sortdel[0] -eq "up") { + $data = $data | Sort-Object -Property Name + $sortdel[0]="down" + }else { + $data = $data | Sort-Object -Property Name -Descending + $sortdel[0]="up" + } + $ItemList = [System.Windows.Data.ListCollectionView]$data + $delbrowser.ItemsSource = $ItemList +} + +function del_sortsize { + Log "### Del: sort size ###" -clear + $data=@() + $array=@() + for ($i = 0; $i -lt $delbrowser.Items.Count; $i++) { + $item = $delbrowser.Items[$i] + if ($item.Size.EndsWith("GB")) { + $stringtrim = $item.Size.TrimEnd(" GB") + }else { + $stringtrim = $item.Size.TrimEnd(" MB") + } + $int = [int]$stringtrim + $array += New-Object PSObject -prop @{Tag=$item.Tag;Size=$int} + [System.Windows.Forms.Application]::DoEvents() + } + if ($sortdel[1] -eq "up") { + $array = $array | Sort-Object -Property Size + $sortdel[1]="down" + }else { + $array = $array | Sort-Object -Property Size -Descending + $sortdel[1]="up" + } + for ($i = 0; $i -lt $array.Count; $i++) { + for ($e = 0; $e -lt $delbrowser.items.Count; $e++) { + if ($array.Tag[$i] -eq $delbrowser.Items.Tag[$e]) { + $item=$delbrowser.Items[$e] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$item.Checked;Tag=$item.Tag;SourceChecked=$Item.SourceChecked;Path=$item.Path} + $e=$delbrowser.items.Count + } + } + [System.Windows.Forms.Application]::DoEvents() + } + $ItemList = [System.Windows.Data.ListCollectionView]$data + $delbrowser.Remove + $delbrowser.ItemsSource = $ItemList +} + +function del_checkall { + Log "### Del: Check all ###" -clear + $data = @() + $check = 0 + if ($sortdel[2]) { + $sortdel[2]=$false + for ($i = 0; $i -lt $delbrowser.Items.Count; $i++) { + $item = $delbrowser.Items[$i] + $tag=$item.Tag + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if ($folderdb[$int][3]) { + $folderdb[$int][3]=$false + count_element $false $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$false;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + $check++ + }else { + $data += $item + } + }else { + if ($filedb[$tag][3]) { + $filedb[$tag][3]=$false + count_element $false $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$false;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + $check++ + }else { + $data += $item + } + } + [System.Windows.Forms.Application]::DoEvents() + } + }else { + $sortdel[2]=$true + for ($i = 0; $i -lt $delbrowser.Items.Count; $i++) { + $item = $delbrowser.Items[$i] + $tag=$item.Tag + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if (!$folderdb[$int][3]) { + $folderdb[$int][3]=$true + count_element $true $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$true;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + $check++ + }else { + $data += $item + } + }else { + if (!$filedb[$tag][3]) { + $filedb[$tag][3]=$true + count_element $true $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$true;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + $check++ + }else { + $data += $item + } + } + [System.Windows.Forms.Application]::DoEvents() + } + } + if ($check -eq 0) { + del_checkall + }else{ + $ItemList = [System.Windows.Data.ListCollectionView]$data + $delbrowser.ItemsSource = $ItemList + } +} + +function final_action { + if ($script:whattodo -eq "move") { + for ($i = 0; $i -lt $filedb.Count; $i++) { + if ($filedb[$i][3]) { + if (!$filedb[$i][4]) { + Move-Item -Path $filedb[$i][2] -Destination $Script:movelocation + $filedb[$i][4] = $true + $logcontent = "Move: " + $filedb[$i][2] + " To: " + $Script:movelocation + Log $logcontent -clear + } + } + [System.Windows.Forms.Application]::DoEvents() + } + for ($i = 0; $i -lt $folderdb.Count; $i++) { + if ($folderdb[$i][3]) { + if (!$folderdb[$i][4]) { + Move-Item -Path $folderdb[$i][2] -Destination $Script:movelocation + $folderdb[$i][4] = $true + $logcontent = "Move: " + $folderdb[$i][2] + " To: " + $Script:movelocation + Log $logcontent -clear + } + } + [System.Windows.Forms.Application]::DoEvents() + } + }elseif ($Script:whattodo -eq "delete") { + for ($i = 0; $i -lt $filedb.Count; $i++) { + if ($filedb[$i][3]) { + if (!$filedb[$i][4]) { + Remove-Item $filedb[$i][2] + $filedb[$i][4] = $true + $logcontent = "Removed: " + $filedb[$i][2] + Log $logcontent -clear + } + } + [System.Windows.Forms.Application]::DoEvents() + } + for ($i = 0; $i -lt $folderdb.Count; $i++) { + if ($folderdb[$i][3]) { + if (!$folderdb[$i][4]) { + Remove-Item $folderdb[$i][2] + $folderdb[$i][4] = $true + $logcontent = "Removed: " + $folderdb[$i][2] + Log $logcontent -clear + } + } + [System.Windows.Forms.Application]::DoEvents() + } + } +} + +Log "### Del geladen ###" -clear \ No newline at end of file diff --git a/Test/GUIS/del/del.xaml b/Test/GUIS/del/del.xaml new file mode 100644 index 0000000..609d89b --- /dev/null +++ b/Test/GUIS/del/del.xaml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Test/GUIS/delconf/delconf.ps1 b/Test/GUIS/delconf/delconf.ps1 new file mode 100644 index 0000000..30c8606 --- /dev/null +++ b/Test/GUIS/delconf/delconf.ps1 @@ -0,0 +1,17 @@ +function Load_delconf { + param ($root) + + # Lädt das Fenster + [xml]$Form = Get-Content "$PSScriptRoot\delconf.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Script:delconfsize = $window.FindName("tbdelsize") + $Script:delconfelements = $window.FindName("tbdeldata") + $Script:deltb = $window.FindName("tb") + + return $window +} \ No newline at end of file diff --git a/Test/GUIS/delconf/delconf.xaml b/Test/GUIS/delconf/delconf.xaml new file mode 100644 index 0000000..990b97a --- /dev/null +++ b/Test/GUIS/delconf/delconf.xaml @@ -0,0 +1,35 @@ + + + + + + + + + + + diff --git a/Test/GUIS/filter/filter.ps1 b/Test/GUIS/filter/filter.ps1 new file mode 100644 index 0000000..e68d451 --- /dev/null +++ b/Test/GUIS/filter/filter.ps1 @@ -0,0 +1,129 @@ +function Load_filter { + param ($root) + + #0=Office;1=Bilder;2=Videos;3=Audios;4=Unterordner einbeziehen + $Script:filtercheck=@($false,$false,$false,$false,$false) + + # Lädt das Fenster + [xml]$Form = Get-Content "$PSScriptRoot\filter.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + $Office=$window.FindName("imgoffice") + $Bilder=$window.FindName("imgbilder") + $Videos=$window.FindName("imgvideos") + $Audios=$window.FindName("imgaudios") + $Script:Filteroffice = $window.FindName("btnoffice") + $Script:Filterbilder = $window.FindName("btnbilder") + $Script:Filtervideos = $window.FindName("btnvideos") + $Script:Filteraudios = $window.FindName("btnaudios") + $Script:filterok = $window.FindName("btnsetzen") + $Script:filterreset = $window.FindName("btnreset") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Office.Source = "$root/Source/Office.png" + $Bilder.Source = "$root/Source/Bild.png" + $Videos.Source = "$root/Source/Video.png" + $Audios.Source = "$root/Source/Audio.png" + + + return $window +} + +function Reset_Filter { + #0=Office;1=Bilder;2=Videos;3=Audios;4=Unterordner einbeziehen + $Script:filtercheck=@($false,$false,$false,$false,$false) + $Filteroffice.background = "#444444" + $Filterbilder.background = "#444444" + $Filtervideos.background = "#444444" + $Filteraudios.background = "#444444" + $mainimgswitch.Source = "$ScriptRoot/Source/swfalse.png" +} + +function Filter_data { + param($tag) + $Script:data = @() + main_loading $true + Filter_deep $tag + main_loading $false + $item = [System.Windows.Data.ListCollectionView]$Script:data + $mainbrowser.Remove + $mainbrowser.ItemsSource = $item +} + +function Filter_deep { + param ($tag) + Log "### Main: Filter deep ###" -clear + $folder = $Script:folderdb[$tag] + for ($i = 5; $i -lt $folder.count; $i++) { + if ($folder[$i] -match "f") { + if ($Script:filtercheck[4]) { + $string=$folder[$i].Substring(1) + $int = [int]$string + if (!$Script:folderdb[$int][4]) { + Filter_deep $int + } + } + }else { + if (!$Script:filedb[$folder[$i]][4]) { + for ($t = 0; $t -lt 3; $t++) { + if ($Script:filtercheck[$t]) { + for ($ti = 0; $ti -lt $Script:types[$t].Count; $ti++) { + if ($Script:types[$t][$ti] -eq $Script:filedb[$folder[$i]][5]) { + if ($Script:filedb[$folder[$i]][3]) { + $cp = "$Script:ScriptRoot\Source\checked.png" + }else { + $cp = "$Script:ScriptRoot\Source\unchecked.png" + } + $Length = calc_Size $Script:filedb[$folder[$i]][1] + $icon = $Script:icontypes[$Script:filedb[$folder[$i]][5]] + $Script:data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\icons\$icon.ico";Name=$Script:filedb[$folder[$i]][0];Size="$Length";Tag=$folder[$i];SourceChecked="$cp"} + Write-Host $Script:filedb[$folder[$i]][0] + } + [System.Windows.Forms.Application]::DoEvents() + } + } + [System.Windows.Forms.Application]::DoEvents() + } + } + } + [System.Windows.Forms.Application]::DoEvents() + } + return $data +} + +function Update_Filter { + $ok = @($true,$true,$true,$true) + $btnname = @("Office","Bilder","Videos","Audios") + $Script:mainchoosen1.Content = $null + $Script:mainchoosen2.Content = $null + $Script:mainchoosen3.Content = $null + $Script:mainchoosen4.Content = $null + for ($i = 0; $i -lt 4; $i++) { + if ($Script:filtercheck[$i]) { + if ($ok[0]) { + $Script:mainchoosen1.Content = "- "+$btnname[$i] + $ok[0] = $false + Log "### Filter "+$btnname[$i]+" gesetzt ###" -clear + }elseif ($ok[1]) { + $Script:mainchoosen2.Content = "- "+$btnname[$i] + $ok[1] = $false + Log "### Filter "+$btnname[$i]+" gesetzt ###" -clear + }elseif ($ok[2]) { + $Script:mainchoosen3.Content = "- "+$btnname[$i] + $ok[2] = $false + Log "### Filter "+$btnname[$i]+" gesetzt ###" -clear + }elseif ($ok[3]) { + $Script:mainchoosen4.Content = "- "+$btnname[$i] + $ok[3] = $false + Log "### Filter "+$btnname[$i]+" gesetzt ###" -clear + } + } + [System.Windows.Forms.Application]::DoEvents() + } +} + +Log "### Filter geladen ###" -clear \ No newline at end of file diff --git a/Test/GUIS/filter/filter.xaml b/Test/GUIS/filter/filter.xaml new file mode 100644 index 0000000..81b0686 --- /dev/null +++ b/Test/GUIS/filter/filter.xaml @@ -0,0 +1,54 @@ + + + + + + + + + \ No newline at end of file diff --git a/Test/GUIS/info/info.ps1 b/Test/GUIS/info/info.ps1 new file mode 100644 index 0000000..4c09c37 --- /dev/null +++ b/Test/GUIS/info/info.ps1 @@ -0,0 +1,20 @@ +function Load_info { + param ($root) + + # Lädt das Fenster + [xml]$Form = Get-Content "$PSScriptRoot\info.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + + $text = $window.FindName("text") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $text.Text = "Der Speicherbedarf auf Gruppenlaufwerken, insbesondere aber auf persönlichen Home-Laufwerken steigt stetig. Daher muss jährlich ein hoher Betrag in die Erweiterung und die Erneuerung von Speichersystemen investiert werden. + Gleichzeitig soll im BR die Zusammenarbeit durch das Teilen von Informationen, Dokumenten und Content verbessert werden. Persönliche und damit exklusive Inhalte und Daten sind dabei kontraproduktiv. Dies gilt vor allem für den produzierten Mediencontent. + Mit diesem Werkzeug können Sie den zu löschenden oder zu verschiebenden Inhalt leichter identifizieren. `n`n$Script:Version `nCopyright Bayerischer Rundfunk (2021)`nAutor: Florian Späth `nDSGVO-konform" + return $window +} \ No newline at end of file diff --git a/Test/GUIS/info/info.xaml b/Test/GUIS/info/info.xaml new file mode 100644 index 0000000..710bdff --- /dev/null +++ b/Test/GUIS/info/info.xaml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/Test/GUIS/main/main.ps1 b/Test/GUIS/main/main.ps1 new file mode 100644 index 0000000..47cb635 --- /dev/null +++ b/Test/GUIS/main/main.ps1 @@ -0,0 +1,514 @@ +function Load_main { + param ($root) + + # Arraydefinition + ## 0=Name,1=Größe,2=checked,3=$false->Name $true->Größe + $Script:sortmain=@("up","up",$false, $false) + + # XAML Fenster + + [XML]$Form = @" + + + + + + + + + + + + + + + +"@ + + # Lädt das Fenster + $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) + + # Objekt - Variablen Verknüpfung + $pb = $window.findName("pb") + $Laufwerk = $window.findName("Laufwerk") + $Script:mainimgswitch = $window.findName("imgswitch") + $imginfo = $window.findName("imginfo") + $Script:mainelements = $window.findName("elemente") + $Script:mainsize = $window.findName("size") + $Script:bar = $window.findName("pbbar") + $Script:last = $window.findName("tblaufwerkauslastung") + $Script:maintree = $window.findName("treeview") + $Script:mainbrowser = $window.findName("browser") + $Script:mainscanner = $window.findName("btnScanner") + $Script:mainfilter = $window.findName("btnchoosefilter") + $Script:maininfo = $window.findName("btninfo") + $Script:mainloading = $window.findName("pbLoading") + $Script:mainswitch = $window.findName("btnfiltersw") + $Script:maindel = $window.findName("btndel") + $Script:mainmove = $window.findName("btnmove") + $Script:mainsortname = $window.findName("btnsortname") + $Script:mainsortsize = $window.findName("btnsortsize") + $Script:maincheckall = $window.findName("btncheckbox") + $Script:mainchoosen1 = $window.findName("choosen1") + $Script:mainchoosen2 = $window.findName("choosen2") + $Script:mainchoosen3 = $window.findName("choosen3") + $Script:mainchoosen4 = $window.findName("choosen4") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Laufwerk.Source = "$root/Source/HDD1.png" + $mainimgswitch.Source = "$root/Source/swfalse.png" + $imginfo.Source = "$root/Source/info.png" + $mainelements.Text = " 0 Elemente" + $mainsize.Text = " 0 MB" + + ### GIF Sanduhr + $file = (get-item "$root/Source/mainhourglas.gif") + $img = [System.Drawing.Image]::Fromfile($file); + $pb.Image = $img + + return $window +} + +function Set_Defaults_Main { + param ($array) + if (!$array[5]) { + $Script:bar.Value=$array[4] + $Script:last.Text=$array[0] + }else{ + $Script:last.Text="OFFLINE" + } +} + +function Get_TreeView { + $maintree.Items.Clear() + $RootItem = New-Object System.Windows.Controls.TreeViewItem + $RootItem.Header = $Script:folderdb[0][0] + $RootItem.Tag = 0 + for ($i = 5; $i -lt $Script:folderdb[0].count; $i++) { + if ($Script:folderdb[0][$i].contains("f")) { + $item=$Script:folderdb[0][$i].Substring(1) + Get_TreeViewExpand $RootItem $item + } + [System.Windows.Forms.Application]::DoEvents() + } + $maintree.Items.Add($RootItem) +} + +function Get_TreeViewExpand { + param ($parentItem, $Folder) + $int = [int]$Folder + if (!$Script:folderdb[$int][4]) { + $subItem = New-Object System.Windows.Controls.TreeViewItem + $subItem.Header = $Script:folderdb[$int][0] + $subItem.Tag = $int + [void]$parentItem.Items.Add($subItem) + for ($i = 5; $i -lt $Script:folderdb[$int].count; $i++) { + if ($Script:folderdb[$int][$i] -match "f") { + $item=$Script:folderdb[$int][$i].Substring(1) + Get_TreeViewExpand $subItem $item + } + [System.Windows.Forms.Application]::DoEvents() + } + } +} + +function Browser_Path { + param ($path) + $data = @() + $c=$false + Log "Tree $path" -clear + for ($t = 0; $t -lt 3; $t++) { + if ($Script:filtercheck[$t]) { + $c=$true + } + [System.Windows.Forms.Application]::DoEvents() + } + if ($c) { + Filter_data $path + }else { + for ($i = 5; $i -lt $Script:folderdb[$path].count; $i++) { + if ($Script:folderdb[$path][$i] -match "f") { + $string=$Script:folderdb[$path][$i].Substring(1) + $int = [int]$string + if (!$Script:folderdb[$int][4]) { + if ($Script:folderdb[$int][3]) { + $cp = "$Script:ScriptRoot\Source\checked.png" + }else { + $cp = "$Script:ScriptRoot\Source\unchecked.png" + } + $Length = calc_Size $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\Source\Folder.png";Name=$Script:folderdb[$int][0];Size="$Length";Tag=$Script:folderdb[$path][$i];SourceChecked="$cp"} + } + }else { + if (!$Script:filedb[$Script:folderdb[$path][$i]][4]) { + if ($Script:filedb[$Script:folderdb[$path][$i]][3]) { + $cp = "$Script:ScriptRoot\Source\checked.png" + }else { + $cp = "$Script:ScriptRoot\Source\unchecked.png" + } + $Length = calc_Size $Script:filedb[$Script:folderdb[$path][$i]][1] + $icon = $Script:icontypes[$Script:filedb[$Script:folderdb[$path][$i]][5]] + $data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\icons\$icon.ico";Name=$Script:filedb[$Script:folderdb[$path][$i]][0];Size="$Length";Tag=$Script:folderdb[$path][$i];SourceChecked="$cp"} + } + } + [System.Windows.Forms.Application]::DoEvents() + $logcontent = "Main: Browser " + $Script:folderdb[$path][$i] + Log $logcontent -clear + } + $item = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.Remove + $mainbrowser.ItemsSource = $item + } +} + +function Check_Browser { + param ($tag) + $data = @() + for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { + if (($mainbrowser.Items.Tag[$i] -eq $tag) -or ($mainbrowser.Items.Count -eq 1)) { + $item=$mainbrowser.Items[$i] + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if ($Script:folderdb[$int][3]) { + $Script:folderdb[$int][3]=$false + count_element $false $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + }else { + $Script:folderdb[$int][3]=$true + count_element $true $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + } + }else { + if ($Script:filedb[$tag][3]) { + $Script:filedb[$tag][3]=$false + count_element $false $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + }else { + $Script:filedb[$tag][3]=$true + count_element $true $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + } + } + }else { + $data += $mainbrowser.Items[$i] + } + [System.Windows.Forms.Application]::DoEvents() + } + $item = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.Remove + $mainbrowser.ItemsSource = $item +} + +function main_sortname{ + param([switch]$change) + $data= @() + if ($change) { + if ($sortmain[0] -eq "up") { + $sortmain[0]="down" + }else { + $sortmain[0]="up" + } + } + for ($i = 0; $i -lt $mainbrowser.Items.count; $i++) { + $item = $mainbrowser.Items[$i] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$item.Checked;Tag=$item.Tag;SourceChecked=$Item.SourceChecked} + [System.Windows.Forms.Application]::DoEvents() + } + if ($sortmain[0] -eq "up") { + $data = $data | Sort-Object -Property Name + }else { + $data = $data | Sort-Object -Property Name -Descending + } + $sortmain[3]=$false + $ItemList = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.ItemsSource = $ItemList +} + +function main_sortsize { + param([switch]$change) + if ($change) { + if ($sortmain[1] -eq "up") { + $sortmain[1]="down" + }else { + $sortmain[1]="up" + } + } + $data=@() + $array=@() + for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { + $item = $mainbrowser.Items[$i] + if ($item.Size.EndsWith("GB")) { + $stringtrim = $item.Size.TrimEnd(" GB") + }else { + $stringtrim = $item.Size.TrimEnd(" MB") + } + $int = [int]$stringtrim + $array += New-Object PSObject -prop @{Tag=$item.Tag;Size=$int} + [System.Windows.Forms.Application]::DoEvents() + } + if ($sortmain[1] -eq "up") { + $array = $array | Sort-Object -Property Size + }else { + $array = $array | Sort-Object -Property Size -Descending + } + for ($i = 0; $i -lt $array.Count; $i++) { + for ($e = 0; $e -lt $mainbrowser.items.Count; $e++) { + if ($array.Tag[$i] -eq $mainbrowser.Items.Tag[$e]) { + $item=$mainbrowser.Items[$e] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$item.Checked;Tag=$item.Tag;SourceChecked=$Item.SourceChecked} + $e=$mainbrowser.items.Count + } + [System.Windows.Forms.Application]::DoEvents() + } + [System.Windows.Forms.Application]::DoEvents() + } + $sortmain[3]=$true + $ItemList = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.Remove + $mainbrowser.ItemsSource = $ItemList +} + +function main_checkall { + $data = @() + $check = 0 + if ($sortmain[2]) { + $sortmain[2]=$false + for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { + $item = $mainbrowser.Items[$i] + $tag=$item.Tag + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if ($folderdb[$int][3]) { + $folderdb[$int][3]=$false + count_element $false $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$false;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + $check++ + }else { + $data += $item + } + }else { + if ($filedb[$tag][3]) { + $filedb[$tag][3]=$false + count_element $false $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$false;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} + $check++ + }else { + $data += $item + } + } + [System.Windows.Forms.Application]::DoEvents() + } + }else { + $sortmain[2]=$true + for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { + $item = $mainbrowser.Items[$i] + $tag=$item.Tag + if ($tag -match "f") { + $string=$tag.Substring(1) + $int = [int]$string + if (!$folderdb[$int][3]) { + $folderdb[$int][3]=$true + count_element $true $Script:folderdb[$int][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$true;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + $check++ + }else { + $data += $item + } + }else { + if (!$filedb[$tag][3]) { + $filedb[$tag][3]=$true + count_element $true $Script:filedb[$tag][1] + $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$true;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} + $check++ + }else { + $data += $item + } + } + [System.Windows.Forms.Application]::DoEvents() + } + } + if ($check -eq 0) { + main_checkall + }else{ + $ItemList = [System.Windows.Data.ListCollectionView]$data + $mainbrowser.ItemsSource = $ItemList + } +} + +function main_loading { + param ($stat) + if($stat){ + $Script:mainloading.Visibility = "Visible" + $Script:maininfo.Visibility = "Hidden" + }else { + $Script:mainloading.Visibility = "Hidden" + $Script:maininfo.Visibility = "Visible" + } +} + +Function Select-FolderDialog{ + param([string]$Description="Zielverzeichnis wählen",[string]$RootFolder="Desktop") + [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |Out-Null + $objForm = New-Object System.Windows.Forms.FolderBrowserDialog + $objForm.Rootfolder = $RootFolder + $objForm.Description = $Description + $Show = $objForm.ShowDialog() + If ($Show -eq "OK"){ + Return $objForm.SelectedPath + }else{ + Return $false + } +} + +Log "### Main geladen ###" -clear \ No newline at end of file diff --git a/Test/GUIS/scanner/scanner.ps1 b/Test/GUIS/scanner/scanner.ps1 new file mode 100644 index 0000000..0540334 --- /dev/null +++ b/Test/GUIS/scanner/scanner.ps1 @@ -0,0 +1,235 @@ + +#0=ScanAktiv; +$Script:switch=@($false,$false) +function Load_scanner { + param ($root) + + # Lädt das Fenster + [xml]$Form = Get-Content "$PSScriptRoot\scanner.xaml" -Encoding utf8 + $NR=(New-Object System.Xml.XmlNodeReader $Form) + $window=[Windows.Markup.XamlReader]::Load($NR) + + # Objekt - Variablen Verknüpfung + $pb=$window.findName("pb") + $Logo=$window.findName("Logo") + $Laufwerk=$window.findName("Laufwerk") + $Script:bar = $window.FindName("pbbar") + $Script:offline = $window.findName("Offline") + $Script:gesamt = $window.FindName("tbgesamt") + $Script:belegt = $window.FindName("tbbelegt") + $Script:scantxt = $window.findName("Scantxt") + $Script:pbloading = $window.findName("pbLoading") + $Script:scannerscan = $window.findName("btnscan") + $Script:scanlb = $window.findName("lbanalyse") + + # Verknüpft feste Elemente + $window.Title = $Script:Version + $window.icon="$root/Source/Logo.png" + $Logo.Source="$root/Source/Logowhite.png" + $Laufwerk.Source="$root/Source/HDD1.png" + + ### GIF Sanduhr + $file = (get-item "$root/Source/hourglas.gif") + $img = [System.Drawing.Image]::Fromfile($file); + $pb.Image = $img + + return $window +} + +function Set_Defaults_Scanner { + param ($array) + if (!$array[5]) { + $Script:bar.Value=$array[4] + $Script:gesamt.Text=$Array[2] + $script:belegt.Text=$array[3] + }else{ + $Script:offline.Visibility="Visible" + } +} + +function Start_Scan { + param () + if (!$Script:switch[0]) { + Log "### Start Scan ###" -clear + #### Variablen Deklaration Script #### + #0=Ordner;1=Datei + $Script:counter=@(0,0) + $Script:Scanprocess = 0 + renew_DB + $Script:scanlb.Content = "Die Analyse des H-Laufwerks läuft..." + $Script:switch[0]=$true + $Script:bar.Background="#ff6400" + $Script:bar.Foreground="#008000" + $Script:scantxt.Visibility="Visible" + $Script:pbloading.Visibility="Visible" + $Script:scannerscan.Content="Abbrechen" + $Script:scannerscan.background="$Script:Delcolor" + start_create_database + Add_Root_Folder_Size + Get_TreeView + Browser_Path -path 0 + $maintree.Items[0].IsExpanded = $true + $maintree.Items[0].IsSelected = $true + if ($Script:switch[0]) { + $Script:switch[0]=$false + $Script:bar.Background="#008000" + $Script:bar.Foreground="#ff6400" + $Script:scantxt.Visibility="Hidden" + $Script:pbloading.Visibility="Hidden" + $Script:scannerscan.Content="Scannen" + $Script:scanlb.Content = "Starte jetzt die Analyse deines H-Laufwerks" + $Script:scannerscan.background="$Script:Standardbtncolor" + $Script:scanner.hide() + Log "### Scan fertig ###" -clear + $Script:main.ShowDialog() | Out-Null + } + }else { + $Script:switch[0]=$false + $Script:bar.Background="#008000" + $Script:bar.Foreground="#ff6400" + $Script:scantxt.Visibility="Hidden" + $Script:pbloading.Visibility="Hidden" + $Script:scannerscan.Content="Scannen" + $Script:scanlb.Content = "Die Analyse des H-Laufwerks läuft..." + $Script:scannerscan.background="$Script:Standardbtncolor" + + } +} + +function renew_DB { + Log "### Datenbank zurückgesetzt ###" -clear + $Script:folderdb = @{ + Legende = @("Name","Größe","Pfad","Checked","Deleted","Vorgänger","Inhalt") + } + $Script:filedb = @{ + Legende = @("Name","Größe","Pfad","Checked","Deleted","Endung") + } +} + +function Scan_Process { + param ($process) + $Value= (($Script:Scanprocess + $process)/$Script:used)*100 + $Script:bar.Value = $Value + Log "Scan prozess: $Value" -clear +} + +function start_create_database { + param () + $collection = Get-ChildItem -path H:\ -Directory + $Script:folderdb[$Script:counter[0]] = @("H-Laufwerk",1,"H:",$false,$false) + create_file_database "H:\" + foreach ($item in $collection){ + $Script:switch[1]=$false + foreach ($itemex in $Script:exclude){ + if ($item.FullName -eq $itemex) { + $Script:switch[1]=$true + } + [System.Windows.Forms.Application]::DoEvents() + } + if (!$Script:switch[1] -and $Script:switch[0]) { + $Script:counter[0]++ + $Script:folderdb[$Script:counter[0]] = @($item.Name,$item.length,$item.FullName,$false,$false) + $Script:folderdb[0] += "f"+$Script:counter[0] + create_file_database $item.FullName + create_folder_database $item.FullName $Script:counter[0] + [System.Windows.Forms.Application]::DoEvents() + } + [System.Windows.Forms.Application]::DoEvents() + } + for ($i = 0; $i -lt $Script:folderdb.Count; $i++) { + $text = "$i " + $Script:folderdb.$i + Log $text + [System.Windows.Forms.Application]::DoEvents() + } + for ($i = 0; $i -lt $Script:filedb.Count; $i++) { + $text = "$i " + $Script:filedb.$i + Log $text + [System.Windows.Forms.Application]::DoEvents() + } +} + +function create_folder_database { + param ($folder,$davor) + if ($Script:switch[0]) { + $collection = Get-ChildItem -path $folder -Directory + foreach ($item in $collection){ + $Script:counter[0]++ + $Script:folderdb[$Script:counter[0]] = @($item.Name,$item.length,$item.FullName,$false,$false) + $Script:folderdb[$davor] += "f"+$Script:counter[0] + create_file_database $item.FullName + create_folder_database $item.FullName $Script:counter[0] + [System.Windows.Forms.Application]::DoEvents() + } + } +} + +function create_file_database { + param ($folder) + $collection = Get-ChildItem -path $folder -File + foreach ($item in $collection) { + $Script:filedb[$Script:counter[1]] = @($item.Name,$item.length,$item.FullName,$false,$false,(get_icon $item.Name)) + $Script:folderdb[$Script:counter[0]] += $Script:counter[1] + $Script:counter[1]++ + [System.Windows.Forms.Application]::DoEvents() + } +} + +function Add_Root_Folder_Size { + param () + $size=0 + for ($i = 5; $i -lt $Script:folderdb[0].count; $i++) { + if ($Script:folderdb[0][$i] -match "f") { + $size=$size+(Add_Folder_Size $Script:folderdb[0][$i]) + }else { + $size=$size+$Script:filedb[$Script:folderdb[0][$i]][1] + } + [System.Windows.Forms.Application]::DoEvents() + } + $Script:folderdb[0][1]=$Size +} + +function Add_Folder_Size { + param ($Folder) + $string=$Folder.Substring(1) + $Folder = [int]$string + $size=0 + for ($i = 5; $i -lt $Script:folderdb[$Folder].count; $i++) { + if ($Script:folderdb[$Folder][$i] -match "f") { + $size=$size+(Add_Folder_Size $Script:folderdb[$Folder][$i]) + }else { + $size=$size+$Script:filedb[$Script:folderdb[$Folder][$i]][1] + } + [System.Windows.Forms.Application]::DoEvents() + } + $Script:folderdb[$Folder][1]=$size + return $size +} + +function get_icon { + param ($data) + $data = $data -replace '\s','' + $found = $true + for ($c = -1; $c -gt -10; $c--) { + $char = $data[$c] + if ($char -eq ".") { + $trim=$data.Length+$c + $trimdata=$data.Remove(0,$trim+1) + $c=-10 + } + [System.Windows.Forms.Application]::DoEvents() + } + for ($i = 0; $i -lt $script:icontypes.Count; $i++) { + if ($trimdata -eq $script:icontypes[$i]) { + $return = $i + $i = $script:icontypes.Count + $found = $false + } + [System.Windows.Forms.Application]::DoEvents() + } + if ($found) { + $return = 0 + } + return $return +} + +Log "### Scanner geladen ###" -clear \ No newline at end of file diff --git a/Test/GUIS/scanner/scanner.xaml b/Test/GUIS/scanner/scanner.xaml new file mode 100644 index 0000000..42c5fa2 --- /dev/null +++ b/Test/GUIS/scanner/scanner.xaml @@ -0,0 +1,52 @@ + + + + + + \ No newline at end of file diff --git a/Test/H-Cleaner (Log).zip b/Test/H-Cleaner (Log).zip new file mode 100644 index 0000000..0b178df Binary files /dev/null and b/Test/H-Cleaner (Log).zip differ diff --git a/Test/H-Cleaner.exe b/Test/H-Cleaner.exe new file mode 100644 index 0000000..e5c7416 Binary files /dev/null and b/Test/H-Cleaner.exe differ diff --git a/Test/Log.txt b/Test/Log.txt new file mode 100644 index 0000000..e72b75a --- /dev/null +++ b/Test/Log.txt @@ -0,0 +1,7 @@ +[02/14/2022 09:30:37] ### Tool gestartet ### +[02/14/2022 09:30:38] ### Del geladen ### +[02/14/2022 09:30:38] ### Filter geladen ### +[02/14/2022 09:30:38] ### Main geladen ### +[02/14/2022 09:30:38] ### Scanner geladen ### +[02/14/2022 09:30:59] ### Cleaner sichtbar ### + diff --git a/Test/README.md b/Test/README.md new file mode 100644 index 0000000..4351cc2 --- /dev/null +++ b/Test/README.md @@ -0,0 +1,15 @@ +# H-Cleaner + +### !!!Das Programm ist scharf geschaltet. Dateien und Ordner werden verschoben und gelöscht!!! + +# Installation + +Um den H-Cleaner zu benutzen den Zip Ordner herunterladen und auf dem H-Laufwerk entpacken. Um das Programm zu Starten lediglich die H-Cleaner.exe ausführen. + +# Bugs + +Bekannte Bugs sind als Tickets im GitLab hinterlegt. + +# Log + +Um ein erstelltes Log ein zu reichen dieses an ein Ticket im GitLab anfügen und das Problem beschreiben. diff --git a/Test/Source/Archiv.png b/Test/Source/Archiv.png new file mode 100644 index 0000000..b94c2ec Binary files /dev/null and b/Test/Source/Archiv.png differ diff --git a/Test/Source/Audio.png b/Test/Source/Audio.png new file mode 100644 index 0000000..4bc0a89 Binary files /dev/null and b/Test/Source/Audio.png differ diff --git a/Test/Source/Bild.png b/Test/Source/Bild.png new file mode 100644 index 0000000..dd648fe Binary files /dev/null and b/Test/Source/Bild.png differ diff --git a/Test/Source/Checked.png b/Test/Source/Checked.png new file mode 100644 index 0000000..f675390 Binary files /dev/null and b/Test/Source/Checked.png differ diff --git a/Test/Source/Container.png b/Test/Source/Container.png new file mode 100644 index 0000000..50f2270 Binary files /dev/null and b/Test/Source/Container.png differ diff --git a/Test/Source/Datenbank.png b/Test/Source/Datenbank.png new file mode 100644 index 0000000..0676d8f Binary files /dev/null and b/Test/Source/Datenbank.png differ diff --git a/Test/Source/Folder.png b/Test/Source/Folder.png new file mode 100644 index 0000000..bd668c8 Binary files /dev/null and b/Test/Source/Folder.png differ diff --git a/Test/Source/HDD1.png b/Test/Source/HDD1.png new file mode 100644 index 0000000..68f4e83 Binary files /dev/null and b/Test/Source/HDD1.png differ diff --git a/Test/Source/Internet.png b/Test/Source/Internet.png new file mode 100644 index 0000000..7041bd3 Binary files /dev/null and b/Test/Source/Internet.png differ diff --git a/Test/Source/Kofig.png b/Test/Source/Kofig.png new file mode 100644 index 0000000..a29e075 Binary files /dev/null and b/Test/Source/Kofig.png differ diff --git a/Test/Source/Logo-alt.PNG b/Test/Source/Logo-alt.PNG new file mode 100644 index 0000000..5589b29 Binary files /dev/null and b/Test/Source/Logo-alt.PNG differ diff --git a/Test/Source/Logo.PNG b/Test/Source/Logo.PNG new file mode 100644 index 0000000..d4468f1 Binary files /dev/null and b/Test/Source/Logo.PNG differ diff --git a/Test/Source/Logowhite.png b/Test/Source/Logowhite.png new file mode 100644 index 0000000..c4fc107 Binary files /dev/null and b/Test/Source/Logowhite.png differ diff --git a/Test/Source/Mail.png b/Test/Source/Mail.png new file mode 100644 index 0000000..1d719a6 Binary files /dev/null and b/Test/Source/Mail.png differ diff --git a/Test/Source/Mails.png b/Test/Source/Mails.png new file mode 100644 index 0000000..79c6514 Binary files /dev/null and b/Test/Source/Mails.png differ diff --git a/Test/Source/Office.png b/Test/Source/Office.png new file mode 100644 index 0000000..672dc3a Binary files /dev/null and b/Test/Source/Office.png differ diff --git a/Test/Source/Softwareentwicklung.png b/Test/Source/Softwareentwicklung.png new file mode 100644 index 0000000..675f8b0 Binary files /dev/null and b/Test/Source/Softwareentwicklung.png differ diff --git a/Test/Source/Sonstiges.png b/Test/Source/Sonstiges.png new file mode 100644 index 0000000..a6075a5 Binary files /dev/null and b/Test/Source/Sonstiges.png differ diff --git a/Test/Source/Texte-Logs.png b/Test/Source/Texte-Logs.png new file mode 100644 index 0000000..8ecc2ac Binary files /dev/null and b/Test/Source/Texte-Logs.png differ diff --git a/Test/Source/Unchecked.png b/Test/Source/Unchecked.png new file mode 100644 index 0000000..196b830 Binary files /dev/null and b/Test/Source/Unchecked.png differ diff --git a/Test/Source/Video.png b/Test/Source/Video.png new file mode 100644 index 0000000..79d5ca2 Binary files /dev/null and b/Test/Source/Video.png differ diff --git a/Test/Source/hourglas.gif b/Test/Source/hourglas.gif new file mode 100644 index 0000000..d3ca882 Binary files /dev/null and b/Test/Source/hourglas.gif differ diff --git a/Test/Source/hourglas_original.gif b/Test/Source/hourglas_original.gif new file mode 100644 index 0000000..2a17e40 Binary files /dev/null and b/Test/Source/hourglas_original.gif differ diff --git a/Test/Source/info.png b/Test/Source/info.png new file mode 100644 index 0000000..46a158e Binary files /dev/null and b/Test/Source/info.png differ diff --git a/Test/Source/loading.gif b/Test/Source/loading.gif new file mode 100644 index 0000000..cde62a2 Binary files /dev/null and b/Test/Source/loading.gif differ diff --git a/Test/Source/mainhourglas.gif b/Test/Source/mainhourglas.gif new file mode 100644 index 0000000..ab72f06 Binary files /dev/null and b/Test/Source/mainhourglas.gif differ diff --git a/Test/Source/marked.png b/Test/Source/marked.png new file mode 100644 index 0000000..d9483e9 Binary files /dev/null and b/Test/Source/marked.png differ diff --git a/Test/Source/swfalse.png b/Test/Source/swfalse.png new file mode 100644 index 0000000..70882ee Binary files /dev/null and b/Test/Source/swfalse.png differ diff --git a/Test/Source/swtrue.png b/Test/Source/swtrue.png new file mode 100644 index 0000000..7ecfbed Binary files /dev/null and b/Test/Source/swtrue.png differ diff --git a/Test/Tickets erstellen.docx b/Test/Tickets erstellen.docx new file mode 100644 index 0000000..68c8bd7 Binary files /dev/null and b/Test/Tickets erstellen.docx differ diff --git a/Test/icons.csv b/Test/icons.csv new file mode 100644 index 0000000..1ecc5ff --- /dev/null +++ b/Test/icons.csv @@ -0,0 +1,47 @@ +ID,Dateiendung,Type,(0=Office;1=Bilder;2=Videos;3=Audios) +1,"empty","0" +2,"xml","0" +3,"cmd","1" +4,"ai","0" +5,"csv","0" +6,"doc","0" +7,"docx","0" +8,"exe","" +9,"gif","1" +10,"ico","1" +11,"img","1" +12,"indd","0" +13,"jar","0" +14,"jpeg","1" +15,"jpg","1" +16,"pdf","0" +17,"png","1" +18,"ppt","0" +19,"pptx","0" +20,"ps1","" +21,"psd","1" +22,"py","" +23,"rss","0" +24,"xaml","0" +25,"xls","0" +26,"xlsx","0" +27,"zip","0" +28,"md","" +29,"sh","" +30,"mp4","2" +31,"mov","2" +32,"wmv","2" +33,"avi","2" +34,"avchd","2" +35,"flv","2" +36,"f4v","2" +37,"swf","2" +38,"mkv","2" +39,"webm","2" +40,"wav","3" +41,"mp3","3" +42,"wma","3" +43,"aac","3" +44,"ogg","3" +45,"flac","3" +46,"rm","3" \ No newline at end of file diff --git a/Test/icons/ai.ico b/Test/icons/ai.ico new file mode 100644 index 0000000..9b31da2 Binary files /dev/null and b/Test/icons/ai.ico differ diff --git a/Test/icons/cmd.ico b/Test/icons/cmd.ico new file mode 100644 index 0000000..64ca206 Binary files /dev/null and b/Test/icons/cmd.ico differ diff --git a/Test/icons/csv.ico b/Test/icons/csv.ico new file mode 100644 index 0000000..1e84cc6 Binary files /dev/null and b/Test/icons/csv.ico differ diff --git a/Test/icons/dll.ico b/Test/icons/dll.ico new file mode 100644 index 0000000..e5a391a Binary files /dev/null and b/Test/icons/dll.ico differ diff --git a/Test/icons/doc.ico b/Test/icons/doc.ico new file mode 100644 index 0000000..028bec7 Binary files /dev/null and b/Test/icons/doc.ico differ diff --git a/Test/icons/docx.ico b/Test/icons/docx.ico new file mode 100644 index 0000000..028bec7 Binary files /dev/null and b/Test/icons/docx.ico differ diff --git a/Test/icons/empty.ico b/Test/icons/empty.ico new file mode 100644 index 0000000..bbd6bab Binary files /dev/null and b/Test/icons/empty.ico differ diff --git a/Test/icons/exe.ico b/Test/icons/exe.ico new file mode 100644 index 0000000..4733f1d Binary files /dev/null and b/Test/icons/exe.ico differ diff --git a/Test/icons/gif.ico b/Test/icons/gif.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/Test/icons/gif.ico differ diff --git a/Test/icons/ico.ico b/Test/icons/ico.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/Test/icons/ico.ico differ diff --git a/Test/icons/img.ico b/Test/icons/img.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/Test/icons/img.ico differ diff --git a/Test/icons/indd.ico b/Test/icons/indd.ico new file mode 100644 index 0000000..09513ca Binary files /dev/null and b/Test/icons/indd.ico differ diff --git a/Test/icons/jar.ico b/Test/icons/jar.ico new file mode 100644 index 0000000..3a255d0 Binary files /dev/null and b/Test/icons/jar.ico differ diff --git a/Test/icons/jpeg.ico b/Test/icons/jpeg.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/Test/icons/jpeg.ico differ diff --git a/Test/icons/jpg.ico b/Test/icons/jpg.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/Test/icons/jpg.ico differ diff --git a/Test/icons/md.ico b/Test/icons/md.ico new file mode 100644 index 0000000..728d68a Binary files /dev/null and b/Test/icons/md.ico differ diff --git a/Test/icons/pdf.ico b/Test/icons/pdf.ico new file mode 100644 index 0000000..c4d723c Binary files /dev/null and b/Test/icons/pdf.ico differ diff --git a/Test/icons/png.ico b/Test/icons/png.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/Test/icons/png.ico differ diff --git a/Test/icons/ppt.ico b/Test/icons/ppt.ico new file mode 100644 index 0000000..b6df5ee Binary files /dev/null and b/Test/icons/ppt.ico differ diff --git a/Test/icons/pptx.ico b/Test/icons/pptx.ico new file mode 100644 index 0000000..b6df5ee Binary files /dev/null and b/Test/icons/pptx.ico differ diff --git a/Test/icons/ps1.ico b/Test/icons/ps1.ico new file mode 100644 index 0000000..c695d2c Binary files /dev/null and b/Test/icons/ps1.ico differ diff --git a/Test/icons/psd.ico b/Test/icons/psd.ico new file mode 100644 index 0000000..ab127fb Binary files /dev/null and b/Test/icons/psd.ico differ diff --git a/Test/icons/py.ico b/Test/icons/py.ico new file mode 100644 index 0000000..18496b6 Binary files /dev/null and b/Test/icons/py.ico differ diff --git a/Test/icons/rss.ico b/Test/icons/rss.ico new file mode 100644 index 0000000..767b84a Binary files /dev/null and b/Test/icons/rss.ico differ diff --git a/Test/icons/sh.ico b/Test/icons/sh.ico new file mode 100644 index 0000000..64ca206 Binary files /dev/null and b/Test/icons/sh.ico differ diff --git a/Test/icons/xaml.ico b/Test/icons/xaml.ico new file mode 100644 index 0000000..70b7f6c Binary files /dev/null and b/Test/icons/xaml.ico differ diff --git a/Test/icons/xls.ico b/Test/icons/xls.ico new file mode 100644 index 0000000..1e84cc6 Binary files /dev/null and b/Test/icons/xls.ico differ diff --git a/Test/icons/xlsx.ico b/Test/icons/xlsx.ico new file mode 100644 index 0000000..1e84cc6 Binary files /dev/null and b/Test/icons/xlsx.ico differ diff --git a/Test/icons/xml.ico b/Test/icons/xml.ico new file mode 100644 index 0000000..767b84a Binary files /dev/null and b/Test/icons/xml.ico differ diff --git a/Test/icons/zip.ico b/Test/icons/zip.ico new file mode 100644 index 0000000..b6d31c4 Binary files /dev/null and b/Test/icons/zip.ico differ diff --git a/Test/pseudonymisierung.ps1 b/Test/pseudonymisierung.ps1 new file mode 100644 index 0000000..0ba90c9 --- /dev/null +++ b/Test/pseudonymisierung.ps1 @@ -0,0 +1,72 @@ +function init_pseudo { + if (Test-Path ".\Log.txt") { + Remove-Item ".\Log.txt" + } + $Script:pseudotbl = @() + $Script:realtbl = @("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") + do { + $tmp = get-random -Minimum 0 -Maximum 256 + if (!($Script:pseudotbl.contains($tmp))) { + $Script:pseudotbl += $tmp + } + } while ($null -eq $Script:pseudotbl[23]) +} +init_pseudo + +function pseudo { + param($realinput) + if ($realinput -is [String]) { + [String]$tmp = $realinput.toLower() + for($i=0;$i -lt $tmp.length;$i++){ + if($tmp[$i] -match "[a-z]"){ + for($c=0;$c -lt 23;$c++){ + if($tmp[$i] -eq $Script:realtbl[$c]){ + $pseudooutput += [char]$Script:pseudotbl[$c] + $c = 23 + } + } + }else { + $pseudooutput += $tmp[$i] + } + } + }elseif ($realinput -is [Object[]]) { + $pseudooutput = @() + foreach($item in $realinput){ + $partoutput="" + if($item -is [String]){ + [String]$tmp = $item.toLower() + for($i=0;$i -lt $tmp.length;$i++){ + if($tmp[$i] -match "[a-z]"){ + for($c=0;$c -lt 23;$c++){ + if($tmp[$i] -eq $Script:realtbl[$c]){ + $partoutput += [char]$Script:pseudotbl[$c] + $c = 23 + } + } + }else{ + $partoutput += $tmp[$i] + } + } + $pseudooutput += $partoutput + }else{ + $pseudooutput += $item + } + } + }else{ + $pseudooutput = $realinput + } + return $pseudooutput +} + + +function Log { + param ($loginput,[switch]$clear) + if($clear){ + #Add-Content -Path .\Log.txt -Value "[$(Get-Date)] $loginput" + $Script:logvar += "[$(Get-Date)] $loginput `r`n" + }else{ + $Script:logvar += "[$(Get-Date)] " + (pseudo $loginput) + "`r`n" + #$logcontent = "[$(Get-Date)] " + (pseudo $loginput) + #Add-Content -Path .\Log.txt -Value $logcontent + } +} \ No newline at end of file diff --git a/Test/root.ps1 b/Test/root.ps1 new file mode 100644 index 0000000..bfc331e --- /dev/null +++ b/Test/root.ps1 @@ -0,0 +1,459 @@ +$Script:Version = "H-Cleaner v0.4.1 (LOG-VERION)" +#Ersteller: Florian Späth +#Diese Software soll helfen im H-Laufwerk geordnet Daten zu löschen + +## +### Notiz: Ticket #66 geschlossen, Ticket #51 geschlossen +## + +#### Pseudonymisierung und Log #### +. .\pseudonymisierung.ps1 +Log "### Tool gestartet ###" -clear + +Add-Type -AssemblyName PresentationFramework +Add-Type -AssemblyName System.Windows.Forms +[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null + +#### Lädt Scripte #### + +. .\GUIS\del\del.ps1 +. .\GUIS\delconf\delconf.ps1 +. .\GUIS\filter\filter.ps1 +. .\GUIS\info\info.ps1 +. .\GUIS\main\main.ps1 +. .\GUIS\scanner\scanner.ps1 + +#### Ordner die bei der Suche ausgeschlossen werden #### + +$Script:exclude=@("H:\EINSTELLUNGEN","H:\Application Data","H:\meancore","H:\Cleaner","H:\Microsoft") + +#### Lädt Guis #### +$Script:main = Load_main $PSScriptRoot # Variable: $main +$Script:scanner = Load_scanner $PSScriptRoot # Variable: $scanner +$Script:filter = Load_filter $PSScriptRoot # Variable: $filter +$Script:del = Load_del $PSScriptRoot # Variable: $del +$Script:delconf = Load_delconf $PSScriptRoot # Variable: $delconf +$Script:info = Load_info $PSScriptRoot # Variable: $info + +#### Definition globaler Variablen #### + +$Script:ScriptRoot = $PSScriptRoot +$Script:iconpath = "$PSScriptRoot\icons" +########################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### + +$Script:Elementcount +$Script:Elementsize + + ### Farb Variablen ### + + $Script:Standardbtncolor = "#00b8d4" + $Script:Delcolor = "#d50000" + $Script:BackgroundMovecolor = "#FFFFEB9C" + $Script:ForegroundMovecolor = "#FF9C6500" + $Script:Foregroundgrey = "#FF7A7A7A" + $Script:Backgroundgrey = "#FFC5C5C5" + +#### Verknüpfungen GUI Objekte - Variablen #### + + ### Info ### + + $infook = $info.findName("btnok") + + ### DelConf ### + + $delconfok = $delconf.FindName("btnok") + +#### Funktionen #### + ### Global ### + function Load_Iconfile { + $Script:types =New-Object int[][] (4) + $Script:icontypes = @() + $iconcsv = Import-Csv "$PSScriptRoot\icons.csv" -Encoding utf8 + for ($i = 0; $i -lt $iconcsv.Count; $i++) { + $Script:icontypes += $iconcsv.Dateiendung[$i] + for ($a = 0; $a -lt 3; $a++) { + if ($iconcsv.Type[$i] -eq $a) { + $Script:types[$a] += $iconcsv.ID[$i] + } + [System.Windows.Forms.Application]::DoEvents() + } + [System.Windows.Forms.Application]::DoEvents() + } + } + + function calc_Size { + param($number) + $res = $number/1MB + $size = " MB" + if($res -gt 1024){ + $res = $number/1GB + $size = " GB" + } + $res = $res.ToString(".00") + if ($res.StartsWith(",") ) { + $res = "0" + $res + } + return $res + $size + } + + function Get_Freespace (){ + # 0=Text Auslastung; 1=Freier Speicher; 2=Gesamter Speicher; 3=Belegter Speicher; 4=Wert für ProgressBar; 5=OFFLINE + $array=@("",0,0,0,$false) + + $use = Get-WMIObject Win32_LogicalDisk -filter "name='H:'" + $check = Get-WMIObject Win32_LogicalDisk -filter "name='C:'" + if ($use.size -ne $check.size) { + $array[1] = calc_Size $use.Freespace + $array[2] = calc_Size $use.size + $free = calc_Size $use.Freespace + $size = calc_Size $use.size + $array[3] = calc_Size ($use.size-($use.size-$use.Freespace)) + if (!$use) { + $array[0] = " FEHLER" + }else { + $array[0] = "$free frei von $size" + $bar = ($use.Freespace/$use.size)*100 + $array[4] = 100-$bar + } + }else{ + $array[4] = 100 + $array[5] = $true + } + return $array + } + + function count_element { + param ( + $count, $size + ) + if ($count) { + $Script:Elementcount++ + $Script:Elementsize = $Script:Elementsize+$size + }else { + $Script:Elementcount-- + $Script:Elementsize = $Script:Elementsize-$size + } + if ($Script:Elementcount -eq 0) { + $maindel.Background = $Script:Backgroundgrey + $mainmove.Background = $Script:Backgroundgrey + $maindel.Foreground = $Script:Foregroundgrey + $mainmove.Foreground = $Script:Foregroundgrey + $mainmove.IsEnabled=$false + $maindel.IsEnabled=$false + $Deldel.Background = $Script:Backgroundgrey + $Deldel.Foreground = $Script:Foregroundgrey + $Deldel.IsEnabled = $false + }else { + $maindel.Background="$Script:Delcolor" + $mainmove.Background="$Script:BackgroundMovecolor" + $maindel.Foreground="white" + $mainmove.Foreground="$Script:ForegroundMovecolor" + $mainmove.IsEnabled=$true + $maindel.IsEnabled=$true + $Deldel.Background = "$Script:Delcolor" + $Deldel.Foreground = "white" + $Deldel.IsEnabled = $true + } + $size = calc_Size $Script:Elementsize + if ($Script:Elementcount -le 1) { + $Delstats.Text = " $Script:Elementcount Element $size" + $mainelements.Text = " $Script:Elementcount Element" + $delconfelements.Text = " $Script:Elementcount Element" + }else { + $Delstats.Text = " $Script:Elementcount Elemente $size" + $mainelements.Text = " $Script:Elementcount Elemente" + $delconfelements.Text = " $Script:Elementcount Elemente" + } + $mainsize.Text = " $size" + $delconfsize.Text = " $size" + } + + ### GUIs ### + ## Scanner ## + + $scannerscan.Add_Click({ + Start_Scan + (New-Object -ComObject WScript.Shell).AppActivate((Get-Process | Where-Object { $_.Id -Match $PID }).MainWindowTitle) + }) + + $scanner.Add_KeyDown{ + param( + [Parameter(Mandatory)][Object]$sender, + [Parameter(Mandatory)][Windows.Input.KeyEventArgs]$e + ) + if($e.Key -eq "Enter"){ + Start_Scan + (New-Object -ComObject WScript.Shell).AppActivate((Get-Process | Where-Object { $_.Id -Match $PID }).MainWindowTitle) + } + } + + ## Main ## + + $mainscanner.Add_Click({ + $main.Hide() + $scanner.ShowDialog() | Out-Null + }) + + $mainfilter.Add_Click({ + $filter.Showdialog() | Out-Null + }) + + $maininfo.Add_Click({ + $info.ShowDialog() | Out-Null + }) + + $maintree.Add_KeyDown{ + param( + [Parameter(Mandatory)][Object]$sender, + [Parameter(Mandatory)][Windows.Input.KeyEventArgs]$e + ) + if($e.Key -eq "Enter"){ + $maintree.SelectedItem.IsExpanded = $true + Browser_Path -path $maintree.SelectedItem.tag + } + } + + $maintree.Add_MouseLeftButtonUp({ + if ($maintree.SelectedItem.tag -ne $null) { + $maintree.SelectedItem.IsExpanded = $true + Browser_Path -path $maintree.SelectedItem.tag + #if ($Script:sortmain[3]) { + # main_sortsize + #}else{ + # main_sortname + #} + } + }) + + $mainbrowser.Add_MouseLeftButtonUp({ + if ($mainbrowser.Selecteditems.tag -ne $null) { + $logcontent = "Main: Clicked " + $mainbrowser.Selecteditems.tag + Log $logcontent -clear + Check_Browser $mainbrowser.Selecteditems.tag + } + }) + + $mainsortname.Add_MouseLeftButtonUp({ + if ($mainbrowser.Items.Count -ne 1) { + Log "### Sortierung nach Name ###" -clear + main_sortname -change + } + }) + + $mainsortsize.Add_MouseLeftButtonUp({ + if ($mainbrowser.Items.Count -ne 1) { + Log "### Sortierung nach Größe ###" -clear + main_sortsize -change + } + }) + + $maincheckall.Add_MouseLeftButtonUp({ + main_checkall + }) + + $mainswitch.Add_Click({ + if ($Script:filtercheck[4]) { + Log "### Filter ohne Unterordner ###" -clear + $mainimgswitch.Source = "$ScriptRoot/Source/swfalse.png" + $Script:filtercheck[4] = $false + Browser_Path -path $maintree.SelectedItem.tag + }else { + Log "### Filter mit Unterordner ###" -clear + $mainimgswitch.Source = "$ScriptRoot/Source/swtrue.png" + $Script:filtercheck[4] =$true + Browser_Path -path $maintree.SelectedItem.tag + } + + }) + + $mainmove.Add_Click({ + $Script:movelocation = Select-FolderDialog + if ($Script:movelocation -ne $false) { + Log "### Clicked MOVE Button ###" -clear + Reset_Filter + Browser_del + $Script:Delwarning.Content = "Zielverzeichnis: $Script:movelocation " + $Script:Delwarning.Background = "$Script:BackgroundMovecolor" + $Script:Delwarning.Foreground = "$Script:ForegroundMovecolor" + + $Script:Delmarked.Content = "Zum Verschieben markiert:" + + $Deldel.Margin="554,364,0,0" + $Deldel.Width="210" + $Deldel.Content = "Markierte verschieben" + $Deldel.Background = "$Script:BackgroundMovecolor" + $Deldel.Foreground = "$Script:ForegroundMovecolor" + $Deltb.Text = "Alle ausgewählten Dateien wurden erfolgreich verschoben." + $Script:whattodo="move" + $main.Hide() + $Del.ShowDialog() | Out-Null + } + }) + + $maindel.Add_Click({ + Log "### Clicked DEL Button ###" -clear + Reset_Filter + Browser_del + $Script:Delwarning.Content = "Die ausgewählten Dateien werden endgültig gelöscht!" + $Script:Delwarning.Background = "$Script:Delcolor" + $Script:Delwarning.Foreground = "white" + + $Script:Delmarked.Content = "Zum löschen markiert:" + + $Deldel.Content = "Markierte löschen" + $Deldel.Margin="592,364,0,0" + $Deldel.Width="172" + $Deldel.Content="Markierte löschen" + $Deldel.Background = "$Script:Delcolor" + $Deldel.Foreground = "white" + $Deltb.Text = "Alle ausgewählten Dateien wurden erfolgreich entfernt." + $Script:whattodo="delete" + $main.Hide() + $Del.ShowDialog() | Out-Null + }) + + ## Del ## + + $Script:Delback.Add_Click({ + Browser_Path -path $maintree.SelectedItem.tag + $Del.Hide() + $main.ShowDialog() | Out-Null + }) + + $Script:Deldel.Add_Click({ + final_action + Get_TreeView + Browser_Path -path $maintree.SelectedItem.tag + $del.hide() + $delconf.ShowDialog() | Out-Null + }) + + $delbrowser.Add_MouseLeftButtonUp({ + if ($delbrowser.Selecteditems.tag -ne $null) { + $logcontent = "Del: Clicked " + $delbrowser.Selecteditems.tag + Log $logcontent -clear + Check_Del $delbrowser.Selecteditems.tag + } + }) + + $Delsortname.Add_MouseLeftButtonUp({ + del_sortname + }) + + $Delsortsize.Add_MouseLeftButtonUp({ + del_sortsize + }) + + $Delcheckall.Add_MouseLeftButtonUp({ + del_checkall + }) + + ## Filter ## + + $script:filterok.Add_Click({ + $filter.Hide() + Update_Filter + $check=$false + foreach($item in $Script:filtercheck){ + if ($item) { + $check=$true + } + [System.Windows.Forms.Application]::DoEvents() + } + if ($check) { + Filter_data -tag $maintree.SelectedItem.tag + }else { + Browser_Path -path $maintree.SelectedItem.tag + } + }) + + $Script:filterreset.Add_Click({ + Reset_Filter + Update_Filter + Browser_Path -path $maintree.SelectedItem.tag + $filter.Hide() + }) + + $filter.Add_MouseLeftButtonDown({ + $filter.DragMove() + }) + + $filteroffice.Add_Click({ + if ($Script:filtercheck[0]) { + $Filteroffice.background = "#444444" + $Script:filtercheck[0] = $false + }else { + $Filteroffice.background = "#00c853" + $Script:filtercheck[0] = $true + } + Update_Filter + }) + + $filterbilder.Add_Click({ + if ($Script:filtercheck[1]) { + $Filterbilder.background = "#444444" + $Script:filtercheck[1] = $false + }else { + $Filterbilder.background = "#00c853" + $Script:filtercheck[1] = $true + } + Update_Filter + }) + + $filtervideos.Add_Click({ + if ($Script:filtercheck[2]) { + $Filtervideos.background = "#444444" + $Script:filtercheck[2] = $false + }else { + $Filtervideos.background = "#00c853" + $Script:filtercheck[2] = $true + } + Update_Filter + }) + + $filteraudios.Add_Click({ + if ($Script:filtercheck[3]) { + $Filteraudios.background = "#444444" + $Script:filtercheck[3] = $false + }else { + $Filteraudios.background = "#00c853" + $Script:filtercheck[3] = $true + } + Update_Filter + }) + + ## Info ## + + $info.Add_MouseLeftButtonDown({ + $info.DragMove() + }) + + $infook.Add_Click({ + $info.Hide() + }) + + ## DelConf ## + + $delconf.Add_MouseLeftButtonDown({ + $delconf.DragMove() + }) + + $delconfok.Add_Click({ + $delconf.Hide() + $main.ShowDialog() | Out-Null + }) + +#### Startet die Anwendung #### + + ### Initialisieren ### + Set_Defaults_Scanner (Get_Freespace) + Set_Defaults_Main (Get_Freespace) + Load_Iconfile + + ### Öffnet erstes Fenster ### + + Log "### Cleaner sichtbar ###" -clear + + $Scanner.ShowDialog() | Out-Null + + Add-Content -Path .\Log.txt -Value $Script:logvar \ No newline at end of file diff --git a/icons.csv b/icons.csv new file mode 100644 index 0000000..2f7e6c5 --- /dev/null +++ b/icons.csv @@ -0,0 +1,48 @@ +ID,Dateiendung,Type,(0=Office;1=Bilder;2=Videos;3=Audios) +1,"empty",0 +2,"xml",0 +3,"cmd",1 +4,"ai",0 +5,"csv",0 +6,"doc",0 +7,"docx",0 +8,"exe", +9,"gif",1 +10,"ico",1 +11,"img",1 +12,"indd",0 +13,"jar",0 +14,"jpeg",1 +15,"jpg",1 +16,"pdf",0 +17,"png",1 +18,"ppt",0 +19,"pptx",0 +20,"ps1", +21,"psd",1 +22,"py", +23,"rss",0 +24,"xaml",0 +25,"xls",0 +26,"xlsx",0 +27,"zip",0 +28,"md", +29,"sh", +30,"mp4",2 +31,"mov",2 +32,"wmv",2 +33,"avi",2 +34,"avchd",2 +35,"flv",2 +36,"f4v",2 +37,"swf",2 +38,"mkv",2 +39,"webm",2 +40,"wav",3 +41,"mp3",3 +42,"wma",3 +43,"aac",3 +44,"ogg",3 +45,"flac",3 +46,"rm",3 +47,"PNG",1 \ No newline at end of file diff --git a/icons/0.ico b/icons/0.ico new file mode 100644 index 0000000..82f5dec Binary files /dev/null and b/icons/0.ico differ diff --git a/icons/ai.ico b/icons/ai.ico new file mode 100644 index 0000000..9b31da2 Binary files /dev/null and b/icons/ai.ico differ diff --git a/icons/cmd.ico b/icons/cmd.ico new file mode 100644 index 0000000..64ca206 Binary files /dev/null and b/icons/cmd.ico differ diff --git a/icons/csv.ico b/icons/csv.ico new file mode 100644 index 0000000..1e84cc6 Binary files /dev/null and b/icons/csv.ico differ diff --git a/icons/dll.ico b/icons/dll.ico new file mode 100644 index 0000000..e5a391a Binary files /dev/null and b/icons/dll.ico differ diff --git a/icons/doc.ico b/icons/doc.ico new file mode 100644 index 0000000..028bec7 Binary files /dev/null and b/icons/doc.ico differ diff --git a/icons/docx.ico b/icons/docx.ico new file mode 100644 index 0000000..028bec7 Binary files /dev/null and b/icons/docx.ico differ diff --git a/icons/empty.ico b/icons/empty.ico new file mode 100644 index 0000000..bbd6bab Binary files /dev/null and b/icons/empty.ico differ diff --git a/icons/exe.ico b/icons/exe.ico new file mode 100644 index 0000000..4733f1d Binary files /dev/null and b/icons/exe.ico differ diff --git a/icons/gif.ico b/icons/gif.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/icons/gif.ico differ diff --git a/icons/ico.ico b/icons/ico.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/icons/ico.ico differ diff --git a/icons/img.ico b/icons/img.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/icons/img.ico differ diff --git a/icons/indd.ico b/icons/indd.ico new file mode 100644 index 0000000..09513ca Binary files /dev/null and b/icons/indd.ico differ diff --git a/icons/jar.ico b/icons/jar.ico new file mode 100644 index 0000000..3a255d0 Binary files /dev/null and b/icons/jar.ico differ diff --git a/icons/jpeg.ico b/icons/jpeg.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/icons/jpeg.ico differ diff --git a/icons/jpg.ico b/icons/jpg.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/icons/jpg.ico differ diff --git a/icons/md.ico b/icons/md.ico new file mode 100644 index 0000000..728d68a Binary files /dev/null and b/icons/md.ico differ diff --git a/icons/pdf.ico b/icons/pdf.ico new file mode 100644 index 0000000..c4d723c Binary files /dev/null and b/icons/pdf.ico differ diff --git a/icons/png.ico b/icons/png.ico new file mode 100644 index 0000000..8085179 Binary files /dev/null and b/icons/png.ico differ diff --git a/icons/ppt.ico b/icons/ppt.ico new file mode 100644 index 0000000..b6df5ee Binary files /dev/null and b/icons/ppt.ico differ diff --git a/icons/pptx.ico b/icons/pptx.ico new file mode 100644 index 0000000..b6df5ee Binary files /dev/null and b/icons/pptx.ico differ diff --git a/icons/ps1.ico b/icons/ps1.ico new file mode 100644 index 0000000..c695d2c Binary files /dev/null and b/icons/ps1.ico differ diff --git a/icons/psd.ico b/icons/psd.ico new file mode 100644 index 0000000..ab127fb Binary files /dev/null and b/icons/psd.ico differ diff --git a/icons/py.ico b/icons/py.ico new file mode 100644 index 0000000..18496b6 Binary files /dev/null and b/icons/py.ico differ diff --git a/icons/rss.ico b/icons/rss.ico new file mode 100644 index 0000000..767b84a Binary files /dev/null and b/icons/rss.ico differ diff --git a/icons/sh.ico b/icons/sh.ico new file mode 100644 index 0000000..64ca206 Binary files /dev/null and b/icons/sh.ico differ diff --git a/icons/xaml.ico b/icons/xaml.ico new file mode 100644 index 0000000..70b7f6c Binary files /dev/null and b/icons/xaml.ico differ diff --git a/icons/xls.ico b/icons/xls.ico new file mode 100644 index 0000000..1e84cc6 Binary files /dev/null and b/icons/xls.ico differ diff --git a/icons/xlsx.ico b/icons/xlsx.ico new file mode 100644 index 0000000..1e84cc6 Binary files /dev/null and b/icons/xlsx.ico differ diff --git a/icons/xml.ico b/icons/xml.ico new file mode 100644 index 0000000..767b84a Binary files /dev/null and b/icons/xml.ico differ diff --git a/icons/zip.ico b/icons/zip.ico new file mode 100644 index 0000000..b6d31c4 Binary files /dev/null and b/icons/zip.ico differ diff --git a/pseudonymisierung.ps1 b/pseudonymisierung.ps1 new file mode 100644 index 0000000..a8f85bf --- /dev/null +++ b/pseudonymisierung.ps1 @@ -0,0 +1,69 @@ +function init_pseudo { + $Script:pseudotbl = @() + $Script:realtbl = @("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") + do { + $tmp = get-random -Minimum 0 -Maximum 256 + if (!($Script:pseudotbl.contains($tmp))) { + $Script:pseudotbl += $tmp + } + } while ($null -eq $Script:pseudotbl[23]) +} +init_pseudo + +function pseudo { + param($realinput) + if ($realinput -is [String]) { + [String]$tmp = $realinput.toLower() + for($i=0;$i -lt $tmp.length;$i++){ + if($tmp[$i] -match "[a-z]"){ + for($c=0;$c -lt 23;$c++){ + if($tmp[$i] -eq $Script:realtbl[$c]){ + $pseudooutput += [char]$Script:pseudotbl[$c] + $c = 23 + } + } + }else { + $pseudooutput += $tmp[$i] + } + } + }elseif ($realinput -is [Object[]]) { + $pseudooutput = @() + foreach($item in $realinput){ + $partoutput="" + if($item -is [String]){ + [String]$tmp = $item.toLower() + for($i=0;$i -lt $tmp.length;$i++){ + if($tmp[$i] -match "[a-z]"){ + for($c=0;$c -lt 23;$c++){ + if($tmp[$i] -eq $Script:realtbl[$c]){ + $partoutput += [char]$Script:pseudotbl[$c] + $c = 23 + } + } + }else{ + $partoutput += $tmp[$i] + } + } + $pseudooutput += $partoutput + }else{ + $pseudooutput += $item + } + } + }else{ + $pseudooutput = $realinput + } + return $pseudooutput +} + + +function Log { + param ($loginput,[switch]$clear) + if($clear){ + #Add-Content -Path .\Log.txt -Value "[$(Get-Date)] $loginput" + $Script:logvar += "[$(Get-Date)] $loginput `r`n" + }else{ + $Script:logvar += "[$(Get-Date)] " + (pseudo $loginput) + "`r`n" + #$logcontent = "[$(Get-Date)] " + (pseudo $loginput) + #Add-Content -Path .\Log.txt -Value $logcontent + } +} \ No newline at end of file diff --git a/root.ps1 b/root.ps1 new file mode 100644 index 0000000..44fddd8 --- /dev/null +++ b/root.ps1 @@ -0,0 +1,484 @@ +$Script:Version = "H-Cleaner v1.0.1" +#Ersteller: Florian Späth +#Diese Software soll helfen im H-Laufwerk geordnet Daten zu verschieben und löschen. + +## +### Notiz: Ticket #66 geschlossen, Ticket #51 geschlossen +## + +#### Pseudonymisierung und Log #### +#. .\pseudonymisierung.ps1 +#Log "### Tool gestartet ###" -clear +$Global:Log=$false +#### + +Add-Type -AssemblyName PresentationFramework +Add-Type -AssemblyName System.Windows.Forms +[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null + +#### Lädt Scripte #### + +. .\GUIS\del\del.ps1 +. .\GUIS\delconf\delconf.ps1 +. .\GUIS\filter\filter.ps1 +. .\GUIS\info\info.ps1 +. .\GUIS\main\main.ps1 +. .\GUIS\scanner\scanner.ps1 + +#### Ordner die bei der Suche ausgeschlossen werden #### + +$Script:exclude=@("H:\EINSTELLUNGEN","H:\Application Data","H:\meancore","H:\Cleaner","H:\Microsoft") + +#### Lädt Guis #### +$Script:main = Load_main $PSScriptRoot # Variable: $main +$Script:scanner = Load_scanner $PSScriptRoot # Variable: $scanner +$Script:filter = Load_filter $PSScriptRoot # Variable: $filter +$Script:del = Load_del $PSScriptRoot # Variable: $del +$Script:delconf = Load_delconf $PSScriptRoot # Variable: $delconf +$Script:info = Load_info $PSScriptRoot # Variable: $info + +#### Definition globaler Variablen #### + +$Script:ScriptRoot = $PSScriptRoot +$Script:iconpath = "$PSScriptRoot\icons" + +$Script:Elementcount = 0 +$Script:Elementsize = 0 + + ### Farb Variablen ### + + $Script:Standardbtncolor = "#00b8d4" + $Script:Delcolor = "#d50000" + $Script:BackgroundMovecolor = "#FFFFEB9C" + $Script:ForegroundMovecolor = "#FF9C6500" + $Script:Foregroundgrey = "#FF7A7A7A" + $Script:Backgroundgrey = "#FFC5C5C5" + +#### Verknüpfungen GUI Objekte - Variablen #### + + ### Info ### + + $infook = $info.findName("btnok") + + ### DelConf ### + + $delconfok = $delconf.FindName("btnok") + +#### Funktionen #### + ### Global ### + function Load_Iconfile { + $Script:types =New-Object int[][] (4) + $Script:icontypes = @() + $iconcsv = Import-Csv "$PSScriptRoot\icons.csv" -Encoding utf8 + for ($i = 0; $i -lt $iconcsv.Count; $i++) { + $Script:icontypes += $iconcsv.Dateiendung[$i] + for ($a = 0; $a -lt 3; $a++) { + if ($iconcsv.Type[$i] -eq $a) { + $Script:types[$a] += $iconcsv.ID[$i] + } + [System.Windows.Forms.Application]::DoEvents() + } + [System.Windows.Forms.Application]::DoEvents() + } + Write-Host $Script:Types + } + + function calc_Size { + param($number) + $res = $number/1MB + $size = " MB" + if($res -gt 1024){ + $res = $number/1GB + $size = " GB" + } + $res = $res.ToString(".00") + if ($res.StartsWith(",") ) { + $res = "0" + $res + } + return $res + $size + } + + function Get_Freespace (){ + # 0=Text Auslastung; 1=Freier Speicher; 2=Gesamter Speicher; 3=Belegter Speicher; 4=Wert für ProgressBar; 5=OFFLINE + $array=@("",0,0,0,$false) + $use = Get-WMIObject Win32_LogicalDisk -filter "name='H:'" + $check = Get-WMIObject Win32_LogicalDisk -filter "name='C:'" + if ($use.size -ne $check.size) { + $array[1] = calc_Size $use.Freespace + $array[2] = calc_Size $use.size + $free = calc_Size $use.Freespace + $size = calc_Size $use.size + $Script:used = $use.size-$use.Freespace + $array[3] = calc_Size ($use.size-($use.size-$use.Freespace)) + if (!$use) { + $array[0] = " FEHLER" + }else { + $array[0] = "$free frei von $size" + $bar = ($use.Freespace/$use.size)*100 + $array[4] = 100-$bar + } + }else{ + $array[4] = 100 + $array[5] = $true + } + #$text = "Freespace: "+$array[1]+"; Used: "+$array[2] + #Log $text -clear + Set_Defaults_Scanner $array + Set_Defaults_Main $array + } + + function count_element { + param ( + $count, $size + ) + if ($count) { + $Script:Elementcount++ + $Script:Elementsize = $Script:Elementsize+$size + }else { + $Script:Elementcount-- + $Script:Elementsize = $Script:Elementsize-$size + } + if ($Script:Elementcount -eq 0) { + $maindel.Background = $Script:Backgroundgrey + $mainmove.Background = $Script:Backgroundgrey + $maindel.Foreground = $Script:Foregroundgrey + $mainmove.Foreground = $Script:Foregroundgrey + $mainmove.IsEnabled=$false + $maindel.IsEnabled=$false + $Deldel.Background = $Script:Backgroundgrey + $Deldel.Foreground = $Script:Foregroundgrey + $Deldel.IsEnabled = $false + + $DelMove.Background = "$Script:Backgroundgrey" + $DelMove.Foreground = "$Script:Foregroundgrey" + $DelMove.IsEnabled = $false + }else { + $maindel.Background="$Script:Delcolor" + $mainmove.Background="$Script:BackgroundMovecolor" + $maindel.Foreground="white" + $mainmove.Foreground="$Script:ForegroundMovecolor" + $mainmove.IsEnabled=$true + $maindel.IsEnabled=$true + $Deldel.Background = "$Script:Delcolor" + $Deldel.Foreground = "white" + $Deldel.IsEnabled = $true + + $DelMove.Background = "$Script:BackgroundMovecolor" + $DelMove.Foreground = "$Script:ForegroundMovecolor" + $DelMove.IsEnabled = $true + } + $size = calc_Size $Script:Elementsize + if ($Script:Elementcount -le 1) { + $Delstats.Text = " $Script:Elementcount Element $size" + $mainelements.Text = " $Script:Elementcount Element" + $delconfelements.Text = " $Script:Elementcount Element" + }else { + $Delstats.Text = " $Script:Elementcount Elemente $size" + $mainelements.Text = " $Script:Elementcount Elemente" + $delconfelements.Text = " $Script:Elementcount Elemente" + } + $mainsize.Text = " $size" + $delconfsize.Text = " $size" + } + + ### GUIs ### + ## Scanner ## + + $scannerscan.Add_Click({ + Start_Scan + (New-Object -ComObject WScript.Shell).AppActivate((Get-Process | Where-Object { $_.Id -Match $PID }).MainWindowTitle) + }) + + $scanner.Add_KeyDown{ + param( + [Parameter(Mandatory)][Object]$sender, + [Parameter(Mandatory)][Windows.Input.KeyEventArgs]$e + ) + if($e.Key -eq "Enter"){ + Start_Scan + (New-Object -ComObject WScript.Shell).AppActivate((Get-Process | Where-Object { $_.Id -Match $PID }).MainWindowTitle) + } + } + + ## Main ## + + $mainscanner.Add_Click({ + $main.Hide() + $scanner.ShowDialog() | Out-Null + }) + + $mainfilter.Add_Click({ + $filter.Showdialog() | Out-Null + }) + + $maininfo.Add_Click({ + $info.ShowDialog() | Out-Null + }) + + $maintree.Add_KeyDown{ + param( + [Parameter(Mandatory)][Object]$sender, + [Parameter(Mandatory)][Windows.Input.KeyEventArgs]$e + ) + if($e.Key -eq "Enter"){ + $maintree.SelectedItem.IsExpanded = $true + Browser_Path -path $maintree.SelectedItem.tag + } + } + + $maintree.Add_MouseLeftButtonUp({ + if ($maintree.SelectedItem.tag -ne $null) { + $maintree.SelectedItem.IsExpanded = $true + Browser_Path -path $maintree.SelectedItem.tag + #if ($Script:sortmain[3]) { + # main_sortsize + #}else{ + # main_sortname + #} + } + }) + + $mainbrowser.Add_MouseLeftButtonUp({ + if ($mainbrowser.Selecteditems.tag -ne $null) { + $logcontent = "Main: Clicked " + $mainbrowser.Selecteditems.tag + #Log $logcontent -clear + Check_Browser $mainbrowser.Selecteditems.tag + } + }) + + $mainsortname.Add_MouseLeftButtonUp({ + if ($mainbrowser.Items.Count -ne 1) { + #Log "### Sortierung nach Name ###" -clear + main_sortname -change + } + }) + + $mainsortsize.Add_MouseLeftButtonUp({ + if ($mainbrowser.Items.Count -ne 1) { + #Log "### Sortierung nach Größe ###" -clear + main_sortsize -change + } + }) + + $maincheckall.Add_MouseLeftButtonUp({ + main_checkall + }) + + $mainswitch.Add_Click({ + if ($Script:filtercheck[4]) { + #Log "### Filter ohne Unterordner ###" -clear + $mainimgswitch.Source = "$ScriptRoot/Source/swfalse.png" + $Script:filtercheck[4] = $false + Browser_Path -path $maintree.SelectedItem.tag + }else { + #Log "### Filter mit Unterordner ###" -clear + $mainimgswitch.Source = "$ScriptRoot/Source/swtrue.png" + $Script:filtercheck[4] =$true + Browser_Path -path $maintree.SelectedItem.tag + } + + }) + + $mainmove.Add_Click({ + $Script:movelocation = Select-FolderDialog + if ($Script:movelocation -ne $false) { + #Log "### Clicked MOVE Button ###" -clear + Reset_Filter + Browser_del + $Script:Delwarning.Visibility = "Hidden" + $Script:Movewarning.Visibility = "Visible" + $Script:Movewarning.Content = "Zielverzeichnis: $Script:movelocation " + + $Script:Movemarked.Visibility = "Visible" + $Script:Delmarked.Visibility = "Hidden" + + $Deldel.Visibility="Hidden" + $DelMove.Visibility="Visible" + + $Script:Deltb.Visibility = "Hidden" + $Script:movetb.Visibility = "Visible" + $Script:whattodo="move" + $main.Hide() + $Del.ShowDialog() | Out-Null + } + }) + + $maindel.Add_Click({ + #Log "### Clicked DEL Button ###" -clear + Reset_Filter + Browser_del + $Script:Delwarning.Visibility = "Visible" + $Script:Movewarning.Visibility = "Hidden" + + $Script:Delmarked.Visibility = "Visible" + $Script:Movemarked.Visibility = "Hidden" + + $Deldel.Visibility="Visible" + $DelMove.Visibility="Hidden" + + $Deldel.Background = "$Script:Delcolor" + $Deldel.Foreground = "white" + $Script:Deltb.Visibility = "Visible" + $Script:movetb.Visibility = "Hidden" + $Script:whattodo="delete" + $main.Hide() + $Del.ShowDialog() | Out-Null + }) + + ## Del ## + + $Script:Delback.Add_Click({ + Browser_Path -path $maintree.SelectedItem.tag + $Del.Hide() + $main.ShowDialog() | Out-Null + }) + + $Script:Deldel.Add_Click({ + final_action + Get_TreeView + Browser_Path -path $maintree.SelectedItem.tag + $del.hide() + $delconf.ShowDialog() | Out-Null + }) + + $Script:DelMove.Add_Click({ + final_action + Get_TreeView + Browser_Path -path $maintree.SelectedItem.tag + $del.hide() + $delconf.ShowDialog() | Out-Null + }) + + $delbrowser.Add_MouseLeftButtonUp({ + if ($delbrowser.Selecteditems.tag -ne $null) { + $logcontent = "Del: Clicked " + $delbrowser.Selecteditems.tag + #Log $logcontent -clear + Check_Del $delbrowser.Selecteditems.tag + } + }) + + $Delsortname.Add_MouseLeftButtonUp({ + del_sortname + }) + + $Delsortsize.Add_MouseLeftButtonUp({ + del_sortsize + }) + + $Delcheckall.Add_MouseLeftButtonUp({ + del_checkall + }) + + ## Filter ## + + $script:filterok.Add_Click({ + $filter.Hide() + Update_Filter + $check=$false + foreach($item in $Script:filtercheck){ + if ($item) { + $check=$true + } + [System.Windows.Forms.Application]::DoEvents() + } + if ($check) { + Filter_data -tag $maintree.SelectedItem.tag + }else { + Browser_Path -path $maintree.SelectedItem.tag + } + }) + + $Script:filterreset.Add_Click({ + Reset_Filter + Update_Filter + Browser_Path -path $maintree.SelectedItem.tag + $filter.Hide() + }) + + $filter.Add_MouseLeftButtonDown({ + $filter.DragMove() + }) + + $filteroffice.Add_Click({ + if ($Script:filtercheck[0]) { + $Filteroffice.background = "#444444" + $Script:filtercheck[0] = $false + }else { + $Filteroffice.background = "#00c853" + $Script:filtercheck[0] = $true + } + Update_Filter + }) + + $filterbilder.Add_Click({ + if ($Script:filtercheck[1]) { + $Filterbilder.background = "#444444" + $Script:filtercheck[1] = $false + }else { + $Filterbilder.background = "#00c853" + $Script:filtercheck[1] = $true + } + Update_Filter + }) + + $filtervideos.Add_Click({ + if ($Script:filtercheck[2]) { + $Filtervideos.background = "#444444" + $Script:filtercheck[2] = $false + }else { + $Filtervideos.background = "#00c853" + $Script:filtercheck[2] = $true + } + Update_Filter + }) + + $filteraudios.Add_Click({ + if ($Script:filtercheck[3]) { + $Filteraudios.background = "#444444" + $Script:filtercheck[3] = $false + }else { + $Filteraudios.background = "#00c853" + $Script:filtercheck[3] = $true + } + Update_Filter + }) + + ## Info ## + + $info.Add_MouseLeftButtonDown({ + $info.DragMove() + }) + + $infook.Add_Click({ + $info.Hide() + }) + + ## DelConf ## + + $delconf.Add_MouseLeftButtonDown({ + $delconf.DragMove() + }) + + $delconfok.Add_Click({ + $delconf.Hide() + $Script:Elementcount = 1 + $Script:Elementsize = 0 + count_element $false 0 + $maintree.Items[0].IsExpanded = $true + $maintree.Items[0].IsSelected = $true + $main.ShowDialog() | Out-Null + }) + +#### Startet die Anwendung #### + + ### Initialisieren ### + Get_Freespace + Load_Iconfile + + ### Öffnet erstes Fenster ### + + #Log "### Cleaner sichtbar ###" -clear + + $Scanner.ShowDialog() | Out-Null + + #Add-Content -Path .\Log.txt -Value $Script:logvar \ No newline at end of file