Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $sig=@'
- public static void ShowConsoleWindow(int state)
- {
- var handle = GetConsoleWindow();
- ShowWindow(handle,state);
- }
- [System.Runtime.InteropServices.DllImport("kernel32.dll")]
- static extern IntPtr GetConsoleWindow();
- [System.Runtime.InteropServices.DllImport("user32.dll")]
- static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
- '@
- $hc=Add-Type -mem $sig -name Hide -Names HideConsole -Ref System.Runtime.InteropServices -Pas
- $hc::ShowConsoleWindow(0)
- [console]::title="Duplicate Image Scanner (c) Wasif Hasan | Sep 2020"
- $eXt=@('.jpg','.png','.gif','.jpeg','.webp','.tiff','.psd','.raw','.bmp','.heif','indd','.svg')
- @('system.windows.forms','system.drawing')|%{add-type -as $_}
- $s=[windows.forms.form]::new();$s.size=[drawing.size]::new(400,850);$s.StartPosition="CenterScreen";$s.Text="Select drives to scan"
- $drives=gdr -p "FileSystem"|select -eXp name
- $top=20;$left=50;$drives|%{
- $c=$_.split(" ")-join"_";$top += 20
- iex "`$$($c) = New-Object System.Windows.Forms.CheckBox;`$$($c).Top = $($top);`$$($c).Left = $($left);`$$($c).Anchor='Left,Top';`$$($c).Parent='';`$$($c).Text='$($_)';`$$($c).Autosize=`$true;if('$_' -in `$drives){`$$c.Checked=`$true};`$s.Controls.Add(`$$c)"
- }
- $ok=New-Object System.Windows.Forms.Button;$ok.Text='OK';$ok.Top=770;$ok.Left=290
- $ok.add_click({$s.Close()});$s.Controls.AddRange($ok)
- $sa=New-Object System.Windows.Forms.Button;$sa.Text='Select All';$sa.Top=770;$sa.Left=200
- $sa.add_click({$s.Controls|?{($_.Checked) -or !($_.Checked)}|%{try{$_.Checked=$True}catch{}}});$s.Controls.AddRange($sa)
- $null=$s.ShowDialog()
- $choices=$s.Controls|?{$_.Checked}|select -eXp Text
- $i=0;$choices|%{$choices[$i]=$_+':\';$i++}
- $f=[windows.forms.form]::new();$f.Size=[drawing.size]::new(600,100);$f.StartPosition="CenterScreen";$f.Text="Please wait"
- $l=[windows.forms.label]::new();$l.Text="Please wait until the scan is complete........";$l.Font="Segoe UI,16";$l.AutoSize=$true;$f.Controls.AddRange($l)
- $null=$f.ShowDialog()
- $files=@();$hCols=@();$choices|%{
- dir $_ -r|?{$_.eXtension-in$eXt}|%{
- $h=get-filehash $_.fullname -a 'SHA256'|select -eXp hash
- if($h-in$hCols){$files+=$_.fullName}else{$hCols+=$h}
- }};$f.Close()
- $del=$files|ogv -t "Duplicate images (Hold CTRL and select the ones to delete)" -p
- $del|%{rm "$_" -fo}
- [windows.forms.messagebox]::Show("Thanks for using!","Duplicate image scanner","OK","Information")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement