20 Ekim 2015 Salı

Windows'da çok uzun dosya veya klasör isimlerinin silinmesi

Windows işletim sisteminde bence uzun zamandır bulunan ve bir çok kullanıcının da rahatsızlık duyduğu çok uzun klasör ve dosya isimlerinin silinmesi problemi var. Gerçekten bir şekilde açılmış olan ve özellikle iç içe açılmış onlarca klasörün içinde bulunan dosyayı silmek yada en alttaki klasörü silmek Windows gezgincisi tarafından imkansız. Bunun için internette de bir çok çözümler mevcut, bunlardan en yaygını Winrar programı ile ilgili klasörün içinden dosyanın ismini değiştirmek ve sonrasında da silmek. Fakat benim karşılaştığım bir sorun sırasında fark ettim ki, Eğer iç içe kopyalanmış klasörler yüzlerce ise Winrar ile de en alttaki klasöre ulaşmak imkansız oluyor. Ne dosya ismi ne de klasör ismini değiştiremiyorsunuz.


Bunun için başka bir yöntem bulmak gerekiyor. Benim internette bulduğum güzel bir yöntem ile bu problemi çözebildik. Hatta binlerce klasör ve dosyayı da teker teker düzeltmeye gerek kalmadan otomatik bir şekilde hem dosyalar hem de klasörleri silmiş olduk.


Yöntemimiz şu şekilde çalışıyor. Robocopy isimli gelişmiş kopyalama komutunu bir çoğunuz duymuşsunuzdur. Bu komutun önemli bir özelliği 259 karakter olan klasör yada dosya uzunluğu kuralının bu komut için geçerli olmaması. Çünkü robocopy yapısı gereği Win32 fonksiyonlarından olan Unicode-aware i kullanıyor ve dosya yollarını gösterirken   \\;\  prefix kullanılıyor. Tabi ki bu sayede 259 karakter limiti bir anda 32,767 karaktere çıkıyor. Böylece iç içe geçmiş yüzlerce klasör dahi olsa en alttaki dosyaları rahatlıkla okuyabiliyor ve işlem yapabiliyor.


Şimdi gelelim çok uzun klasör ve içlerinde ki dosyaları basit bir şekilde silme işlemine.


Öncelikle yapılacak işleri yazalım. Silinecek klasör yada dosyaların bulunduğu diskimizin üzerine;


md bosklasor
robocopy bosklasor silinecekklasor /s /mir


komutlarını kullanarak işlemleri yapalım. Komut işlemi bitince de her iki klasörü sorunsuz bir şekilde silebilirsiniz.


Komutun çalışma teorisini biraz açarsak;


Boş bir klasörü md komutu ile açıyoruz, ve bu boş klasörü içindekiler ile birlikte silmek istediğimiz sorunlu klasör ile bir çeşit eşitleme yapıyoruz. Boş klasörümüzün içi boş olduğu için silinecek klasör ile eşitleme sırasında otomatik olarak bütün dosya ve klasörler siliniyor.


Ben bu sayede belki de en son çare olan diskimizi formatlama ve her türlü ayar ve dosyaları geri kopyalama işinden kurtulmuş oldum.








Hiç yorum yok:

Yorum Gönder