C# Dosya Adları Değiştirme Projesi

C# Dosya Adları Değiştirme Projesi

12 Ekim 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 145
Yaklaşık okuma süresi : 15 DK
C# Form Ekran Konumu Ayarlama
IDENTITY_INSERT is set to ON/OFF Kullanımı ve Hata Çözümü
C# Dosya Adları Değiştirme Projesi
5 (100%) 1 Oy

C# Dosya Adları Değiştirme Projesi , Selamlar, uzun zamandır yazı yazamıyordum. Bugün elime büyük sayıda dosyaları olan geçti. 1000+ dosyaydı. Bu dosyalar 1 – Yazı.docx şeklinde isimlendirilmiş. Tek tek bu dosyaları isimlendirmek elbette mümkün değil. Bu yüzden bende küçük bir proje hazırladım.  Bu yazımda sizlerle bu projeyi de dahil olmaz üzere paylaşmak istedim.

C# Dosya Adları Değiştirme Projesi

Elime geçen dosya isimleri şöyleydi…

  • 01 – asdasd.docx
  • 02 – as123dasd.docx
  • 03 – asdasd.docx
  • 004 – asdaasdsd.docx
  • 6 – asd123asd.docx
  • 07 – asd123asd.docx
  • 08 – a123sdasd.docx
  • 09 – asdasd.docx

Burada tek ortak nokta sayılardan sonra ayraç olarak ( – ) kullanılmış. Numaralandırmalar rastgele yapılmış. Sıralı gidiyor ama gördüğünüz şekilde birinde başta sıfır yok. Bazılarında 2 tane var.

 

Şimdi yaptığım projeye geçeyim. Önce bir ekran görüntüsü vereceğim.

c# dosya işlemleri

1 – Önce yeniden numaralandıracağımız dosyaların olduğunu klasörü seçiyoruz.

2 – ham dosyalar listeleniyor.

3 – düzeltilen dosyalar listenelenecek

4 – işlem yapılan dosyanın uzantısı yazılıyor. (göstermelik bir şey aslında)

5 – İşlenen dosyalar kopyalansın mı yoksa taşınsın mı seçiyoruz.

6 – Dosyaların isimlerinde hangi karakter ayraç olarak kullanılmış ise onu yazıyoruz.

7 – İsimlendirme işleminde sıra numarasının solunda kaç sıfır olacak onu belirtiyoruz. Örn 4 yazarsak hep 4 karakter olacaktır. 0001, 0022, 0333, 9999 şeklinde… Eğer 9999 fazla varsa 5 karakter olarak devam eder.

8 – Seçilen klasör içerisine yeni bir klasör açar. Açılacak bu klasörün adının ne olacağını yazarsınız.

9 – Butona tıkladığımızda işlem yapılır.

Aslında bu kadar özelliğe elbette gerek yoktu ama zaten amacıma 10 dk kadar sürede vardım üzerine birkaç şey daha eklemek istedim. O yüzden diğerlerini ekledim.  Şimdi projemizi açıkladığımıza göre kodları vereyim. Elbette yazının sonunda proje olarak da vereceğim. İndirip istediğiniz şekilde düzenleyebilirsiniz.

İlgili İçerik  C# Kurulu Antivirüsü Kontrol Etmek

NOT: Projemde DevExpress 2016 kullandım. Size DevExpress 2016 yok ise designer sayfasını göremeyebilirsiniz.

Proje Kodlarına Geçelim

Öncelikle aşağıdaki namespace’i ekliyoruz.

using System.IO;

Yukarıdaki görselde 1 numarada olan nesne Devepxress nesnesidir ve adı ButtonEdit’tir. En sağdaki 3 nokta buton görevi görür. Bunun yeine bir textbox ile button olarak kullanabilirsiniz.

ButtonEdit, ButtonClick Evetine aşağıdaki kodları yazıyoruz.

private void buttonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            FolderBrowserDialog fBrowser = new FolderBrowserDialog();
            fBrowser.ShowDialog();
            string secilenDizin = fBrowser.SelectedPath;
            bte_klasor_yol.Text = secilenDizin;
            list_eski_dosya_listesi.Items.Clear();
            DizinIceriginiListeyeEkle(secilenDizin, list_eski_dosya_listesi);
        }

buradaki kodları açıklamak gerekirse, bir FolderBrowser nesnesi oluşturuyoruz. Bu nesne bize bir klasör yolunu almamızı sağlıyor. Sonrasında aldığımız yolu buttonedit’in text’ine yazıyoruz. Listemizi temizliyoruz ve DizinIceriginiListeyeEkle() metodumuzu çalıştırıyoruz. Şimdi DizinIceriginiListeyeEkle() metodumuzu verelim.

 private void DizinIceriginiListeyeEkle(string dizin, ListBoxControl list)
        {
            string[] dizindekiKlasorler = Directory.GetDirectories(dizin);
            string[] dizindekiDosyalar = Directory.GetFiles(dizin);

            foreach (string dosya in dizindekiDosyalar)
            {
                FileInfo fileInfo = new FileInfo(dosya);
                string dosyaAdi = fileInfo.Name;
                list.Items.Add(dosyaAdi);
            }
        }

Bu metodumuz iki tane parametre alıyor. Birincisi seçtiğimiz dosya yolunu ve bir listboxcontrol nesnesi…

Klasördeki dosyaların isimlerini 2 numaradaki listboxcontrol nesnesine dolduruyoruz yani ham dosyaları. Aynı şekilde bu metodu, işlenen dosyaları 3 numaradaki listboxcontrol’e doldurmak içinde kullanıyoruz.

        string path = "";
        string YeniDosyaAdi = "";
        string[] DosyaAdi = new string[2];
        char ayrac = new char();
        char nokta = '.';
        FileInfo fi;

        private void btn_yeniden_sırala_Click(object sender, EventArgs e)
        {
            if (!Directory.Exists(bte_klasor_yol.Text + "\\" + txt_yeni_klasor_adi.Text))
            {
                Directory.CreateDirectory(bte_klasor_yol.Text + "\\" + txt_yeni_klasor_adi.Text);
            }

            if (txt_ayrac.Text.Trim() == string.Empty)
            {
                if (MessageBox.Show("Yeniden numaralandırma işlemi için dosya adlarında bir ayraç / seperator olmalıdır. "
                    + "Yoksa tüm dosyadı değiştirilir. " + Environment.NewLine + Environment.NewLine
                    + "EVET derseniz tüm dosya adları sadece " + txt_basamak.Text + " basamaklı sayılar olur." + Environment.NewLine
                    + "HAYIR derseniz hiçbir işlem yapılmaz."
                    , "Onay Verin", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    list_yeni_dosya_listesi.Items.Clear();
                    for (int i = 0; i < list_eski_dosya_listesi.Items.Count; i++)
                    {
                        path = bte_klasor_yol.Text + "\\" + list_eski_dosya_listesi.Items[i];
                        DosyaAdi[1] = (i + 1).ToString("d" + txt_basamak.Text + "");
                        fi = new FileInfo(path);
                        txt_uzanti.Text = fi.Extension;
                        YeniDosyaAdi = bte_klasor_yol.Text + "\\" + txt_yeni_klasor_adi.Text + "\\" + DosyaAdi[1] + fi.Extension;

                        switch (comboBoxEdit1.SelectedIndex)
                        {
                            case 0:
                                File.Copy(path, YeniDosyaAdi);
                                break;
                            case 1:
                                File.Move(path, YeniDosyaAdi);
                                break;
                        }
                    }
                    DizinIceriginiListeyeEkle(bte_klasor_yol.Text + "\\" + txt_yeni_klasor_adi.Text, list_yeni_dosya_listesi);
                }
                else { }
            }
            else
            {
                list_yeni_dosya_listesi.Items.Clear();
                for (int i = 0; i < list_eski_dosya_listesi.Items.Count; i++)
                {
                    path = bte_klasor_yol.Text + "\\" + list_eski_dosya_listesi.Items[i];
                    ayrac = Convert.ToChar(txt_ayrac.Text);
                    DosyaAdi = list_eski_dosya_listesi.Items[i].ToString().Replace(nokta, ayrac).Split(ayrac);
                    fi = new FileInfo(path);
                    txt_uzanti.Text = fi.Extension;
                    YeniDosyaAdi = bte_klasor_yol.Text + "\\" + txt_yeni_klasor_adi.Text + "\\" + (i + 1).ToString("d" + txt_basamak.Text + "") + " - " + DosyaAdi[1] + fi.Extension;

                    switch (comboBoxEdit1.SelectedIndex)
                    {
                        case 0:
                            File.Copy(path, YeniDosyaAdi);
                            break;
                        case 1:
                            File.Move(path, YeniDosyaAdi);
                            break;
                    }
                }
                DizinIceriginiListeyeEkle(bte_klasor_yol.Text + "\\" + txt_yeni_klasor_adi.Text, list_yeni_dosya_listesi);
            }
        }

Asıl işi yapan kodları geldi sıra…

İlgili İçerik  C# Class Nedir? Nasıl Kullanılır?

İlk önce işlenmiş dosyalarımızı atacağımız yeni klasör var mı yok mu onu kontrol ediyoruz. varsa birşey yapmıyoruz. Yokse klasörü oluşturuyoruz. Burada ayraç  kısmına birşey yazılmadıysa bir uyarı veriyor. Bu uyarıya EVET cevabı verirseniz tüm dosyalar sadece numaralandırılıyor. Yani ayraç olsa da olmasada 1. listboxcontrol’deki sıraya göre işlem yapıyor. Kopyalama ya da taşıma hangisi seçildiyse ona göre işlemi yapacak.

Eğer ayraç yazıldıysa, öncelikle uzantılardan kurtulmak için tüm noktaları ayraç olarak replace ediyoruz. Sonrasında ayraçlardan parçalıyoruz.  Sıfırıncı indexte numaralar, ikinci indexte dosyaya verilen ad, üçündü indexte ise uzantı var.  Burada dosya adını alarak for döngüsünün index’i üzerinden yine dışarıdan girilen basamak sayısı kadar numaraları verip yeni adı ve uzantısı ile taşıma yada kopyalama işlemini gerçekleştiriyor.

Sonuç

Sonuç olarak böyle bir proje… Daha kısa yada daha güzel kodlarla da yazılabilir belki. Bu proje toplamda 20 dakika bile sürmeyen bir sürede bitmişti. İşimi görmüş oldu. Belki sizlerinde işine yarayabilir. Bu projeyi istediğiniz şekilde ve istediğiniz yerde özgürce kullanabilirsiniz.

Ayrıca tıklayarak GitHub üzerinden erişim sağlayabilirsiniz.


C# Dosya Adları Değiştirme Projesi, yazımızda bu kadar dostlar. Diğer derslerimizde görüşmek üzere.

C Sharp Eğitim Seti ve ERP Programlama eğitimi sayfasına gitmek için tıklayınız.

Sağlıcakla ve takipte kalın. 😉

C# Form Ekran Konumu Ayarlama
IDENTITY_INSERT is set to ON/OFF Kullanımı ve Hata Çözümü
Mustafa Bükülmez

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım.

Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir.

Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.

İlgili İçerik  SQL İç İçe Select Kullanımı