1. sayfa (Toplam 1 sayfa)

Dosya_Dizin Yeniden İsimlendirme Betiği

Gönderilme zamanı: 24 Mar 2025 15:26
gönderen TRWE_2012
Dosya/Dizin İsim Değiştirme Python Kodlaması

KOD İÇERİĞİ ( Klasör_Dosya_İsimlendirme.PY) :

Kod: Tümünü seç

import os

# Windows için yalnızca Windows ve System32 klasörlerini engelle
def sistem_dizini_mi(yol):
    if os.name == "nt":  # Windows
        yasakli_dizinler = ["C:\\Windows", "C:\\Windows\\System32"]
        return any(yol.lower().startswith(d.lower()) for d in yasakli_dizinler)
    else:  # Linux
        yasakli_dizinler = ["/", "/root", "/etc", "/bin", "/usr", "/lib", "/sys", "/dev", "/proc"]
        return yol in yasakli_dizinler

def dosya_adi_degistir(klasor):
    while True:
        dosya_dizinler = os.listdir(klasor)

        if not dosya_dizinler:
            print("\nBu klasör boş! Listeleme yapılamaz.")
            return

        print("\nKlasördeki dosya ve dizinler:")
        for i, item in enumerate(dosya_dizinler, start=1):
            print(f"{i}. {item} {'' if os.path.isdir(os.path.join(klasor, item)) else ''}")

        secim = input("\nDeğiştirmek istediğiniz dosya veya dizinleri seçin (örnek: 1:3:5) veya 'exit' ile çıkın: ")

        if secim.lower() == "exit":
            print("Çıkılıyor...")
            return

        try:
            secimler = [int(s.strip()) - 1 for s in secim.split(":")]
            if any(s < 0 or s >= len(dosya_dizinler) for s in secimler):
                print("Geçersiz numara! Lütfen listeden geçerli numaralar girin.")
                continue
        except ValueError:
            print("Geçersiz giriş! Sayıları ':' ile ayırarak girin.")
            continue

        yeni_isimler = []
        alt_dizinler = []

        for s in secimler:
            secilen_dosya = dosya_dizinler[s]
            eski_yol = os.path.join(klasor, secilen_dosya)

            if os.path.isdir(eski_yol):  # Eğer dizin ise, ekstra seçenek sun
                print(f"\n '{secilen_dosya}' bir dizin.")
                islem = input("1 Sadece adını değiştir\n2 Adını değiştir ve içeriği listele\nSeçiminiz (1/2): ").strip()

                if islem == "2":
                    alt_dizinler.append(eski_yol)

            yeni_isim = input(f"Yeni ismi girin (eski isim: {secilen_dosya}): ").strip()
            if not yeni_isim:
                print("Yeni isim boş olamaz! İşlem iptal edildi.")
                return

            yeni_yol = os.path.join(klasor, yeni_isim)
            if os.path.exists(yeni_yol):
                print(f"Hata: '{yeni_isim}' zaten mevcut! İşlem iptal edildi.")
                return

            yeni_isimler.append((eski_yol, yeni_yol))

        for eski_yol, yeni_yol in yeni_isimler:
            try:
                os.rename(eski_yol, yeni_yol)
                print(f"\n '{os.path.basename(eski_yol)}' -> '{os.path.basename(yeni_yol)}' olarak değiştirildi.")
                # Eğer içeriği listeleme seçeneği seçildiyse yeni adıyla devam et
                if eski_yol in alt_dizinler:
                    dosya_adi_degistir(yeni_yol)
            except Exception as e:
                print(f"Hata oluştu: {e}")

        devam_et = input("\nDevam etmek ister misiniz? (Evet/Hayır): ").strip().lower()
        if devam_et not in ["evet", "e", "yes", "y"]:
            print("İşlem tamamlandı.")
            return

while True:
    klasor_yolu = input("Lütfen dosya/dizinlerin bulunduğu klasör yolunu girin: ").strip()

    if not os.path.isdir(klasor_yolu):
        print("Geçersiz klasör yolu! Lütfen tekrar girin.")
        continue

    if sistem_dizini_mi(klasor_yolu):
        print(" Hata: Windows veya System32 dizinlerinde işlem yapılamaz!")
        continue

    dosya_adi_degistir(klasor_yolu)
    break
KOD İÇERİK AÇIKLAMASI :

Bu Python betiği, kullanıcıya belirli bir dizindeki dosya ve dizinlerin adlarını değiştirme imkanı sunan bir araçtır. Betik, Windows ve Linux sistemlerine özel bazı kısıtlamalarla birlikte çalışmaktadır.

Betiğin Kod Özellikleri :

sistem_dizini_mi(yol):

Bu fonksiyon, verilen yolun sistem dizini olup olmadığını kontrol eder.
Windows için: C:\Windows ve C:\Windows\System32 dizinlerinde işlem yapılmasını engeller.
Linux için: Kritik sistem dizinlerinde (örneğin: /etc, /bin, /usr, vb.) işlem yapılmasını engeller.

dosya_adi_degistir(klasor):

Bu fonksiyon, kullanıcıya belirli bir dizindeki dosya ve dizinlerin adlarını değiştirme işlemi yapma imkanı sunar.
Klasördeki dosya ve dizinleri listeler ve kullanıcıdan bir seçim yapmasını ister.
Kullanıcı, dosya veya dizinlerin adlarını değiştirebilir. Eğer bir dizin seçilmişse, kullanıcıya iki seçenek sunulur:
Yalnızca dizinin adını değiştirme.
Dizinin adını değiştirme ve içeriğini listeleme.

İşlem Akışı:

Betik, kullanıcının girdiği klasör yolunun geçerli olup olmadığını kontrol eder.
Eğer yol geçerli değilse, tekrar giriş yapması istenir.
Eğer yol, sistem dizini ise işlem yapılmaz.
Sonrasında kullanıcıya dizindeki öğeleri listeleme ve adlarını değiştirme seçenekleri sunulur.
Kullanıcı ad değişikliği yaptıktan sonra, alt dizinlerde de benzer işlemleri gerçekleştirme imkanı sağlanır.

Kullanıcı etkileşimi:

Betik, kullanıcının yanlış giriş yapması durumunda hata mesajları gösterir ve geçerli seçimler bekler.
Ayrıca, işlem sonrasında devam etmek isteyip istemediği sorulur.

Kısıtlamalar:

Windows: C:\Windows ve C:\Windows\System32 dizinlerinde işlem yapılamaz.
Linux: Kök dizin ve kritik sistem dizinlerinde işlem yapılamaz.

EKRAN GÖRÜNTÜSÜ :

Resim

NOT:

Windows sisteminde "Bilinen Dosya Uzantıları Gizle" seçeneği devredışı ise (yani dosya uzantıları sistem'de görünür nitelikte ise) "Uzantı isimlerini de" değiştirebiliyorsunuz....!