484 lines
15 KiB
PowerShell
484 lines
15 KiB
PowerShell
$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 |