Skip to main content

AccessTr.neT


Boş Klasör / Alt Klasör Silme

Boş Klasör / Alt Klasör Silme

#1
Merhaba;

Hem forum içinde hem de başka kaynaklarda yaptığım aramalarda işime yarayacak bir çözüm maalesef bulamadım. Bulduğum kodlar da dönüştürülemeyecek kadar karmaşıktı.

Sorun şu:

Herhangibir dosya yolundaki (örneğin veritabanının olduğu CurrentProject.Path\resimler ve alt klasörlerinde) boş klasörleri silmemiz gerekiyor. Proje içindeki döngüler çok karmaşık olduğu için klasör adı vererek bunu yaptırmak imkansız hale geldi. (Bu arada RmDir komutu da işe yaramıyor)

Bunu yapacak genel bir kod nasıl olmalı? (Örneğin ana klasörün alt klasörlerine bakıp, boyutu "sıfır" olanları silmek gibi?

Teşekkürler...
Cevapla
#2
sayın donepezil,

bahsettiğiniz talebinize yönelik olarak;

öncelikle,bir hususu belirtmekte fayda var kanısındayım.

RMDIR Komutu;
eğer içerisinde başka klasör mevcutsa klasör silme işlemini uygulamaz ve hata verir.sadece,içeriği tamamen BOŞ ise işlemini gerçekleştirir.

ÖRNEK

uygulamanın olduğu klasörün içerisinde a_alt_klasoru adlı ve bu a_alt_klasoru adlı klasörün de içerisinde b_alt_klasoru adlı alt klasör olduğu geçerli olsun.

a_alt_klasoru ve b_alt_klasoru alt klasörlerini silmek istediğimizde,

1) önce en içte yer alan alt klasörün (b_alt_klasoru) içerisinde eğer herhangi bir DOSYA ya da DOSYALAR mevcutsa,bu dosyaları tamamen silmelisiniz.bunu da KILL Komutu ile yapmalısınız.

2) sonrasında da,sırasıyla yine içteki alt klasörlerden başlamak sureti ile RMDIR Komutunu kullanarak içerden dışa doğru tüm klasörleri silmelisiniz.

Kod:
Kill CurrentProject.Path & "\" & "a_alt_klasoru" & "\" & "b_alt_klasoru" & "\" & "*.*"

RmDir CurrentProject.Path & "\" & "a_alt_klasoru" & "\" & "b_alt_klasoru"

RmDir CurrentProject.Path & "\" & "a_alt_klasoru"

kod satırlarını kullanarak silebilirsiniz.

bilginize...iyi çalışmalar,saygılar.
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#3
sayın donepezil,

bir önceki mesajda yazılı olan kodları kullandığınızda sorunsuz çalışmaktadır fakat buna bir de kontrol kodları dahil edilerek kullanmak daha yerinde olacaktır.

çünkü;
tekrar aynı butonu tıklama durumu veya bu kodları çalıştırma işlemi söz konusu olursa,herhangi bir hata iletisi vermemesini sağlamak gerekmektedir.

bunun için de;

Kod:
If Len(CurrentProject.Path & "\" & "a" & "\" & "b" & "\" & "*.*") > 0 Then
MsgBox ("Dosya ve klasörler silinmiştir."), vbInformation, "DOSYA VE KLASÖR SİLİNDİ UYARISI"
Exit Sub
Else
Kill CurrentProject.Path & "\" & "a" & "\" & "b" & "\" & "*.*"

RmDir CurrentProject.Path & "\" & "a" & "\" & "b"

RmDir CurrentProject.Path & "\" & "a"

End If

yukarıdaki kodları kullanmak daha geçerli olacaktır.

bilginize...iyi çalışmalar,saygılar.
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#4
(11/01/2017, 14:55)atoz112 yazdı: sayın donepezil,

bir önceki mesajda yazılı olan kodları kullandığınızda sorunsuz çalışmaktadır fakat buna bir de kontrol kodları dahil edilerek kullanmak daha yerinde olacaktır.

çünkü;
tekrar aynı butonu tıklama durumu veya bu kodları çalıştırma işlemi söz konusu olursa,herhangi bir hata iletisi vermemesini sağlamak gerekmektedir.

bunun için de;

Kod:
If Len(CurrentProject.Path & "\" & "a" & "\" & "b" & "\" & "*.*") > 0 Then
MsgBox ("Dosya ve klasörler silinmiştir."), vbInformation, "DOSYA VE KLASÖR SİLİNDİ UYARISI"
Exit Sub
Else
Kill CurrentProject.Path & "\" & "a" & "\" & "b" & "\" & "*.*"

RmDir CurrentProject.Path & "\" & "a" & "\" & "b"

RmDir CurrentProject.Path & "\" & "a"

End If

yukarıdaki kodları kullanmak daha geçerli olacaktır.

bilginize...iyi çalışmalar,saygılar.

Sn Atoz teşekkür ederim;

Ama maalesef bu konuyu açmadan önce yukarıda belirttiğiniz tüm yolları denedim. Maalesef bahsettiğim "çözüm bulamadım" söylevi bunun içindi. Formun yapacağı alternatifler dahilinde bu algoritma bazen çalışmakta ama bazı ihtimallerde hata vermekte. Öncelikle klasör içeriğini silme işlemini bu işlemden önceki kodlar yapmakta. Klasör boş kaldıktan sonra aynı üst klasörün altında yan yana pekçok boş klasör kalmakta. Ama alt klasörlerden 1 tanesi muhakkak dolu olmak zorunda. Bundan dolayı klasör boyutlarını kontrol eden bir çözüm sanıyorum daha uygun olacaktır.

İncelemeniz bakımından şurada sizin de yardımınızla çözümler bulduğumuz çalışmanın son halini ekliyorum. Sizin de yardımda bulunduğunuz kodları çok daha temiz ve sade olduğunu düşündüğüm bir çalışmaya aktardım. Kullanıcının tüm hamle olasılıklarına göre klasörleri açıyor, resimleri taşıyor, klasör açtırmayan değişken (örnekte Tc No) değiştirilmişse sadece resim adını değiştiriyor. Sizi bu konuda daha fazla yormamak için genel soru açmak istemiştim.

Örnek çalışma ekte.

Saygılar.
.rar resim_ekleme_klasor_acma_donepezil.rar (Dosya Boyutu: 687,54 KB | İndirme Sayısı: 6)
Son Düzenleme: 11/01/2017, 16:33, Düzenleyen: donepezil.
Cevapla
#5
Recursive olarak çözüm getirebilirsiniz. Sabit bir klasör adı ve miktarı olmayacağı için ancak bu yöntemle çözülebilir.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#6
(11/01/2017, 16:09)alpeki99 yazdı: Recursive olarak çözüm getirebilirsiniz. Sabit bir klasör adı ve miktarı olmayacağı için ancak bu yöntemle çözülebilir.

Sn. alpeki99;

Maalesef recursive fonksiyon yazabilecek kadar vb kod bilgim yok Img-cray

Belki bir örnek çalışmada bulursam düzenleyebilirim.

İlginiz için teşekkür ederim.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task