Selamlar...
Bilgisayarınızda bazı dosyalardan birden fazla olduğunda bunları bulup silmeye ihtiyaç olabilir.
İşte böyle bir ihtiyaçtan dolayı MukerrerleriBulSil programını yazmıştım.
Kaynak kodları zip dosyasının içinde.
İstediğiniz gibi kullanabilirsiniz.
Çalışma mantığı şu şekilde:
Bilgisayarınızdaki sürücüler yükleniyor programın açılışında.
Herhangi bir sürücü veya dizin seçiyorsunuz. (Bilgisayarım'ı seçerseniz tüm sürücüleri tarar.)
Sonra aramak istediğiniz dosya uzantısını seçiyorsunuz.
Fazla uzun sürmesin diye dosya uzantısı seçtiriyorum.
Sonra dizindeki belirtilen uzantıdaki aynı isimdeki dosyaları bulup grid'in içine dolduruyor.
Bunlar illa aynı olmak zorunda değil tabi.
Listeden silmek istediklerinizi seçip, seçilenleri sil dediğinizde mükerrer dosyalar siliniyor.
Kodu aşağıdaki adresten indirebilirsiniz:
http://www.divshare.com/download/14049617-7a9
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
//using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;
using System.IO;
using System.Collections;
using System.Security.AccessControl;
using System.Security.Principal;
 
namespace MukerrerleriBulSil
{
    public partial class frmMukerrer : Form
    {
        public frmMukerrer()
        {
            InitializeComponent();
        }
 
        Hashtable htDosyaYolu;
        Hashtable htMukerrerler;
        long lngIdx;
        long lngDizinSayac;
        string strKolonDosyaAdi;
        string strKolonDosyaYolu;
        string strKolonSec;
        string strKolonDosyaBoyut;
        Hashtable htYerelDisk;
        int intDiskSayac;
        int intPgMaks = 49999;
        private void frmMukerrer_Load(object sender, EventArgs e)
        {
            htYerelDisk = new Hashtable();
            intDiskSayac = 0;
            strKolonDosyaYolu = "Dosya Yolu";
            strKolonDosyaAdi = "Dosya Adi";
            strKolonDosyaBoyut = "Boyut";
            strKolonSec = "Sec";
            lngIdx = 0;
            htMukerrerler = null;
            htDosyaYolu = null;
            //
            pgBar.Maximum = intPgMaks;
            dosyaUzantilariniYukle();
            PopulateDriveList();
            DataGridViewCheckBoxColumn ck = new DataGridViewCheckBoxColumn();
            ck.Name = strKolonSec;
            ck.Width = 50;
            gridMukerrerler.Columns.Insert(0, ck);
            gridMukerrerler.ReadOnly = false;
        }
 
        //This procedure populate the TreeView with the Drive list
        private void PopulateDriveList()
        {
            TreeNode nodeTreeNode;
            int imageIndex = 0;
            int selectIndex = 0;
 
            const int Removable = 2;
            const int LocalDisk = 3;
            const int Network = 4;
            const int CD = 5;
            //const int RAMDrive = 6;
 
            this.Cursor = Cursors.WaitCursor;
            //clear TreeView
            tvDizinler.Nodes.Clear();
            nodeTreeNode = new TreeNode("Bilgisayarim", 0, 0);
            tvDizinler.Nodes.Add(nodeTreeNode);
 
            //set node collection
            TreeNodeCollection nodeCollection = nodeTreeNode.Nodes;
 
            //Get Drive list
            ManagementObjectCollection queryCollection = getDrives();
            foreach (ManagementObject mo in queryCollection)
            {
                //foreach (PropertyData pd in mo.Properties)
                //    Console.WriteLine(pd.Name   " - "   pd.Value);
 
                switch (int.Parse(mo["DriveType"].ToString()))
                {
                    case Removable:            //removable drives
                        imageIndex = 5;
                        selectIndex = 5;
                        break;
                    case LocalDisk:            //Local drives
                        imageIndex = 6;
                        selectIndex = 6;
                        // Bilgisayarim secilmisse yerel diskleri tarayalim.
                        htYerelDisk.Add(intDiskSayac, mo["Name"].ToString()   "\\");
                        intDiskSayac  ;
                        break;
                    case CD:                //CD rom drives
                        imageIndex = 7;
                        selectIndex = 7;
                        break;
                    case Network:            //Network drives
                        imageIndex = 8;
                        selectIndex = 8;
                        break;
                    default:                //default to folder
                        imageIndex = 2;
                        selectIndex = 3;
                        break;
                }
                //create new drive node
                nodeTreeNode = new TreeNode(mo["Name"].ToString()   "\\", imageIndex, selectIndex);
 
                //add new node
                nodeCollection.Add(nodeTreeNode);
            }
            this.Cursor = Cursors.Default;
        }
 
        protected ManagementObjectCollection getDrives()
        {
            //get drive collection
            ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * From Win32_LogicalDisk ");
            ManagementObjectCollection queryCollection = query.Get();
 
            return queryCollection;
        }
 
        private void tvDizinler_Secildi(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            //Populate folders and files when a folder is selected
            this.Cursor = Cursors.WaitCursor;
 
            //get current selected drive or folder
            TreeNode nodeCurrent = e.Node;
 
            // eger Bilgisayarim secilirse buraya 3 defa giriyor ve sectirmiyordu. bu kontrol onun icin.
            if (nodeCurrent.Index == 0)
            {
                this.Cursor = Cursors.Default;
                return;
            }
 
            //clear all sub-folders
            nodeCurrent.Nodes.Clear();
 
            if (nodeCurrent.SelectedImageIndex == 0)
            {
                //Selected My Computer - repopulate drive list
                PopulateDriveList();
            }
            else
            {
                //populate sub-folders and folder files
                PopulateDirectory(nodeCurrent, nodeCurrent.Nodes);
            }
            this.Cursor = Cursors.Default;
        }
 
        protected void PopulateDirectory(TreeNode nodeCurrent, TreeNodeCollection nodeCurrentCollection)
        {
            TreeNode nodeDir;
            int imageIndex = 2;        //unselected image index
            int selectIndex = 3;    //selected image index
            string stringFullPath = "";
            string stringPathName = "";
            string[] stringDirectories = null;
 
            if (nodeCurrent.SelectedImageIndex != 0)
            {//populate treeview with folders                
                try
                {//check path                    
                    if (Directory.Exists(getFullPath(nodeCurrent.FullPath)) == false)
                    {
                        MessageBox.Show("Directory or path "   nodeCurrent.ToString()   " does not exist.");
                    }
                    else
                    {
                        stringDirectories = Directory.GetDirectories(getFullPath(nodeCurrent.FullPath));
 
                        //loop throught all directories
                        foreach (string stringDir in stringDirectories)
                        {
                            stringFullPath = stringDir;
                            stringPathName = GetPathName(stringFullPath);
                            //create node for directories
                            nodeDir = new TreeNode(stringPathName.ToString(), imageIndex, selectIndex);
                            nodeCurrentCollection.Add(nodeDir);
                        }
                    }
                }
                catch (IOException)
                {
                    MessageBox.Show("Hata: Surucu hazir degil ya da dizin yok!");
                }
                catch (UnauthorizedAccessException)
                {
                    MessageBox.Show("Hata: Surucu veya dizine erisim yetkisi yok!");
                }
                catch (Exception e)
                {
                    MessageBox.Show("Hata: ("   e   ")");
                }
            }
        }
 
        protected string GetPathName(string strPath)
        {
            //Get Name of folder
            string[] stringSplit = strPath.Split('\\');
            int _maxIndex = stringSplit.Length;
            return stringSplit[_maxIndex - 1];
        }
 
        protected string getFullPath(string strPath)
        {
            string stringParse = strPath.Replace("Bilgisayarim\\", "");
            return stringParse;
        }
 
        private void btnSecilenDiziniTara_Click(object sender, EventArgs e)
        {
            if (tvDizinler.SelectedNode == null)
            {
                MessageBox.Show("Lutfen bir dizin seciniz!", "Surucu veya Dizin", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (cmbDosyaUzantisi.SelectedItem == null)
            {
                MessageBox.Show("Lutfen bir dosya uzantisi seciniz!", "Dosya Uzantisi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            TreeNode tn = null;
            lngIdx = 0;
            lngDizinSayac = 0;
            pgBar.Value = 0;
            htDosyaYolu = new Hashtable();
            htMukerrerler = new Hashtable();
            tn = tvDizinler.SelectedNode;
            if (tn.Parent == null) //demek ki Bilgisayarim secilmis.
            {
                for (int i = 0; i < htYerelDisk.Count; i  )
                    dizinleriBul(htYerelDisk[i].ToString());
            }
            else
            {
                dizinleriBul(tn.Text);
            }
            mukerrerleriBul();
            gridiDoldur();
        }
 
        private void gridiDoldur()
        {
            //    long lng1 = 0;
            //    htMukerrerler.Add(lng1, "deneme.txt@@|@@d:/deneme/deneme.txt");
            //    lng1 = 1;
            //    htMukerrerler.Add(lng1, "deneme2.txt@@|@@d:/deneme/deneme2.txt");
            //    lng1 = 2;
            //    htMukerrerler.Add(lng1, "deneme3.txt@@|@@d:/deneme/deneme3.txt");            
            gridMukerrerler.DataSource = dtDoldur();
            gridMukerrerler.Columns[strKolonDosyaAdi].Width = 100;
            gridMukerrerler.Columns[strKolonDosyaAdi].Resizable = DataGridViewTriState.False;
            gridMukerrerler.Columns[strKolonDosyaAdi].ReadOnly = true;
            gridMukerrerler.Columns[strKolonDosyaYolu].Width = 275;
            gridMukerrerler.Columns[strKolonDosyaYolu].Resizable = DataGridViewTriState.False;
            gridMukerrerler.Columns[strKolonDosyaYolu].ReadOnly = true;
            gridMukerrerler.Columns[strKolonDosyaBoyut].Width = 65;
            gridMukerrerler.Columns[strKolonDosyaBoyut].Resizable = DataGridViewTriState.False;
            gridMukerrerler.Columns[strKolonDosyaBoyut].ReadOnly = true;
            gridMukerrerler.DefaultCellStyle.Font = new Font("Tahoma", 8);
            gridMukerrerler.DefaultCellStyle.ForeColor = Color.Blue;
            gridMukerrerler.DefaultCellStyle.BackColor = Color.Beige;
        }
 
        private void dizinleriBul(string pSeciliDizin)
        {
            string[] diziDizinler = null;
            try
            {
                lngDizinSayac  ;
                if (lngDizinSayac > intPgMaks)
                    pgBar.Value = intPgMaks - 1;
                else
                    pgBar.Value  = 1;
                lblTarama.Text = lngDizinSayac   " adet dizin tarandi.";
                dosyalariBul(pSeciliDizin);
                try
                {
                    diziDizinler = Directory.GetDirectories(pSeciliDizin);
                }
                catch (UnauthorizedAccessException)
                {
                    //dizineIzinVer(pSeciliDizin);
                    //diziDizinler = Directory.GetDirectories(pSeciliDizin);
                }
                if (diziDizinler.Length > 0)
                {
                    for (int i = 0; i < diziDizinler.Length; i  )
                    {
                        dizinleriBul(diziDizinler[i]);
                        Application.DoEvents();                        
                    }
                }
            }
            catch (Exception e)
            {
                ClsHataKayit.hataKontrolXml("dizinleriBul", e.Message);
            }
        }
 
        private void dosyalariBul(string pSeciliDizin)
        {
            int i = 0;
            try
            {
                string[] filePaths = Directory.GetFiles(pSeciliDizin, cmbDosyaUzantisi.SelectedItem.ToString(), <br>SearchOption.TopDirectoryOnly);
                for (i = 0; i &amp;amp;lt; filePaths.Length; i  )
                {
                    htDosyaYolu.Add(lngIdx, filePaths[i].ToString());
                    lngIdx  ;
                }
            }
            catch (UnauthorizedAccessException)
            {
                // HataKayit.hataKontrolXml("dosyalariBul", e.Message);
            }
        }
 
        private void dosyaUzantilariniYukle()
        {
            //OzelListe lst1 = null;
            //lst1 = new OzelListe("*.mp3", "1");
            //cmbDosyaUzantisi.Items.Add(lst1);
            System.Xml.XmlDocument xmlDokuman = new System.Xml.XmlDocument();
            System.Xml.XmlNodeList lst1 = null;
            xmlDokuman.Load("DosyaUzantilari.xml");
            lst1 = xmlDokuman.SelectNodes("/KOK/Dosya_Uzantisi");
            foreach (System.Xml.XmlNode nod1 in lst1)
            {
                cmbDosyaUzantisi.Items.Add(nod1.InnerText);
            }
        }
 
        private DataTable dtDoldur()
        {
            string[] diziStr = new string[] { "@@|@@" };
            DataTable dt = new DataTable("dtMukerrerler");
 
            //Create columns and add to DataTable;
            DataColumn dcDosyaAdi = new DataColumn(strKolonDosyaAdi);
            dt.Columns.Add(dcDosyaAdi); //ID column created and add to DataTable
 
            DataColumn dcDosyaYolu = new DataColumn(strKolonDosyaYolu);
            dt.Columns.Add(dcDosyaYolu); //LastName column created and add to DataTable
 
            DataColumn dcDosyaBoyut = new DataColumn(strKolonDosyaBoyut);
            dt.Columns.Add(dcDosyaBoyut); //LastName column created and add to DataTable
 
            //Now Add some data to the DataTable
            DataRow dr;
            for (long lng1 = 0; lng1 &amp;amp;lt; htMukerrerler.Count; lng1  )
            {
                dr = dt.NewRow();
                dr[strKolonDosyaAdi] = htMukerrerler[lng1].ToString().Split(diziStr, StringSplitOptions.RemoveEmptyEntries)[0];
                dr[strKolonDosyaYolu] = htMukerrerler[lng1].ToString().Split(diziStr, StringSplitOptions.RemoveEmptyEntries)[1];
                dr[strKolonDosyaBoyut] = htMukerrerler[lng1].ToString().Split(diziStr, StringSplitOptions.RemoveEmptyEntries)[2];
                dt.Rows.Add(dr);
            }
            return dt;
        }
 
        //private void gridMukerrerler_CellContentClick(object sender, DataGridViewCellEventArgs e)
        //{
        //    gridMukerrerler_CellClick(sender, e);
        //}
 
        //private void gridMukerrerler_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        //{
        //    gridMukerrerler_CellClick(sender, e);
        //}
 
        private void gridMukerrerler_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (gridMukerrerler.CurrentCell.ReadOnly)
                {
                    gridMukerrerler.CurrentCell.Selected = false;
                }
                else
                {
                    if ((bool)gridMukerrerler.CurrentCell.EditedFormattedValue)
                        gridMukerrerler.Rows[gridMukerrerler.CurrentCell.RowIndex].DefaultCellStyle.BackColor = Color.Beige;
                    else
                        gridMukerrerler.Rows[gridMukerrerler.CurrentCell.RowIndex].DefaultCellStyle.BackColor = Color.DarkOrange;
                }
            }
            catch (Exception err)
            {
                ClsHataKayit.hataKontrolXml("gridMukerrerler_CellContentClick", err.Message);
            }
        }
 
        private void gridMukerrerler_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            gridMukerrerler_CellClick(sender, e);
        }
 
        private void mukerrerleriBul()
        {
            long lng1 = 0, lng2 = 0;
            long lngMukerrerler = 0;
            string strDosyaAdi1 = "", strDosyaAdi2 = "";
            string strDosyaYolu1 = "", strDosyaYolu2 = "";
            htMukerrerler = new Hashtable();
            System.IO.FileInfo fi = null;
            if (htDosyaYolu.Count &amp;amp;lt;= 0)
            {
                MessageBox.Show("Secilen dosya uzantisina ait dosya bulanamadi!", "Dosya Bulunamadi", MessageBoxButtons.OK, <br>MessageBoxIcon.Information);
                return;
            }
            for (lng1 = 0; lng1 &amp;amp;lt; htDosyaYolu.Count; lng1  )
            {
                strDosyaYolu1 = htDosyaYolu[lng1].ToString();
                strDosyaAdi1 = GetPathName(strDosyaYolu1);
                for (lng2 = 0; lng2 &amp;amp;lt; htDosyaYolu.Count; lng2  )
                {
                    strDosyaYolu2 = htDosyaYolu[lng2].ToString();
                    strDosyaAdi2 = GetPathName(strDosyaYolu2);
                    if (lng1 != lng2)
                    {
                        if (strDosyaAdi1.Equals(strDosyaAdi2))
                        {
                            if (!iseDizideVar(strDosyaAdi1   "@@|@@"   strDosyaYolu1))
                            {
                                //    if (!iseDizideVar(strDosyaAdi2   "@@|@@"   strDosyaYolu2))
                                //    {
                                //        htMukerrerler.Add(lngMukerrerler, strDosyaAdi2   "@@|@@"   strDosyaYolu2);
                                //    }
                                //}
                                //else
                                //{
                                fi = new System.IO.FileInfo(strDosyaYolu1);
                                htMukerrerler.Add(lngMukerrerler, strDosyaAdi1   "@@|@@"   strDosyaYolu1   "@@|@@"   fi.Length.ToString());
                                lngMukerrerler  ;
                            }
                        }
                    }
                }
                lblTarama.Text = lng1   " adet kayit islendi...";
                Application.DoEvents();
            }
            lblTarama.Text = lng1   " adet kayit islendi...";
            pgBar.Value = intPgMaks-1;
        }
 
        private bool iseDizideVar(string pStr)
        {
            bool iseVar = false;
            for (long lng1 = 0; lng1 &amp;amp;lt; htMukerrerler.Count; lng1  )
            {
                if (htMukerrerler[lng1].ToString().Equals(pStr))
                {
                    iseVar = true;
                    break;
                }
            }
            return iseVar;
        }
 
        private void dizineIzinVer(string pDizinYolu)
        {
            //try
            //{
            //    DirectoryInfo info = new DirectoryInfo(pDizinYolu);
            //    WindowsIdentity self = System.Security.Principal.WindowsIdentity.GetCurrent();
            //    DirectorySecurity ds = info.GetAccessControl();
            //    ds.AddAccessRule(new FileSystemAccessRule(self.Name, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit |
            //                        InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow));
            //    info.SetAccessControl(ds);
            //}
            //catch (Exception e)
            //{
            //    HataKayit.hataKontrolXml("dizineIzinVer", e.Message);
            //}
        }
         
        private void MukerrerleriBulSil_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (MessageBox.Show("Çıkmak istediğinizden emin misiniz?", "MukerrerleriBulSil", MessageBoxButtons.YesNo, <br>MessageBoxIcon.Question) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }
 
        private void btnCikis_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void btnSecilenleriSil_Click(object sender, EventArgs e)
        {
            Hashtable htSilinecekler = new Hashtable();
            int i = 0, j=0;
            try
            {
                foreach (DataGridViewRow rw in gridMukerrerler.Rows)
                {
                    if ((bool)rw.Cells[strKolonSec].FormattedValue)
                    {
                        htSilinecekler.Add(i, rw.Cells[strKolonDosyaYolu].FormattedValue.ToString());
                        i  ;
                    }
                }
                for (j = 0; j &amp;amp;lt; htSilinecekler.Count; j  )
                {
                    File.Delete(htSilinecekler[j].ToString());
                    Application.DoEvents();
                }
                MessageBox.Show("Islem tamamlandi.("   j   ")", "Islem Tamam", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception er)
            {
                ClsHataKayit.hataKontrolXml("btnSecilenleriSil_Click", er.Message);
            }
        }
    }
}
 
 
Saygılar...
# Kategoriler : C# Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Arama
  Ara
Sayfalar
Takvim
<December 2018>
SMTWTFS
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
Bağlantılar