Filecopy fonksiyonu ile dizi kullanarak yeniden isimlendirme

Katılım
17 Kasım 2004
Mesajlar
43
Merhabalar,
Başlıkta çok doğru ifade edememiş olabilirim kusuruma bakmayın.

Şöyle birşey yapmak istiyorum.
c:\eski1\ klasöründeki 10098.jpg,10099.jpg, 10100.jpg adlı dosyaları c:\yeni1\ içerisine adlarını a0001.jpg, a0002.jpg, a0003.jpg gibi bir seri oluşturacak şekilde yeniden isimlendirerek kopyalamak istiyorum.

Ekteki örnek dosyamda görebileceğiniz üzere kopyalama işlemini yapabiliyorum.
Fakat isimlendirmeyi örnekte verdiğim listedeki gibi sıralı şekilde yeniden yapmam gerekiyor.

Sanırım yeni ad listemi array olarak tanımlayıp bir de do while döngüsü kullanmam gerekiyor, fakat bunların kullanımını çok bilmiyorum yardımcı olursanız sevinirim.

Teşekkürler
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,032
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Peki bu işlemi yaparken "eski1" isimli klasörün altındaki "jpg" uzantılı tüm resim dosyalarınımı kopyalayıp adını değiştirmek istiyorsunuz?
 
Katılım
17 Kasım 2004
Mesajlar
43
@Korhan Bey ilginiz için teşekkürler.
Linkini verdiğiniz başlıktaki kodları inceledim. Orada her jpg dosyasının karşılığına yeni ismi yazarak yeniden isimlendirme yapılabiliyor. Benim örneğimdeki gibi binlerce farklı klasör olduğunu düşününce her klasör için benim bu şekilde listeleme yapıp manuel olarak karşısına yeni isim girmem mümkün değil. Böyle olabilseydi sadece filecopy ile bunu yapmam mümkün oluyordu zaten.

Klasördeki tüm dosyalar isimlendirilecek evet. Zaten hep sıralı sayı şeklinde gidiyor jpg dosyaları. Yani mesela 10098,10099,10100,100101 şekilde. Arada ne atlayan dosya var ne de adı sayı olmayan. Hepsi aynı standartta.

Düzenleyip yeniden gönderdiğim ekteki örneği incelerseniz h2:h38 aralığındaki değerleri bir diziye aktarıp yenidosya ismine bir döngü ile her turda dizideki bir sonraki değerle, dosya sayısı kadar döndürebilirsem işim görülmüş olur diye düşünüyorum. Biraz analtmakta güçlük yaşıyorum ama örneği incelerseniz daha açık anlaşılır belki.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
bu kodu denermisiniz
kod sşağıdaki mesajda
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
dosyayı gendermemişim ekledim

dosya aşağıdaki mesajda
 
Son düzenleme:
Katılım
17 Kasım 2004
Mesajlar
43
@Halit Bey ilginiz için teşekkür ediyorum.
Fakat sizin verdiğiniz kodlar da işimi görmüyor. Şöyle bir durum sözkonusu: Vermiş olduğum örnekte 3 dosya olduğu varsayımıyla yaptım. Ve örneğim daha anlaşılabilir olsun diye alt kısma her klasörün mevcut durumunu ve olması gerekeni belirtir örnek yazmıştım.

Fakat örnekte olduğu gibi 3 satır değil de 3000 satır/klasör olduğunu varsayın. Bu durumda ben her klasör için tek tek yeni isimleri elle giremem. Öyle olduğu takdirde bir dosya isimlendirme programı kullanmak daha cazip olacaktır.
Ben zaten excel ile dosyaları ayrıştırma/klasörleme yapıyorken isimlendirmeyi de otomatize edebileyim istiyorum.

Elimdeki verilerden bir örnek daha gönderiyorum belki daha açıklayıcı olur diye.
 

Ekli dosyalar

Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
anlıyamadım bu tablonu hangi klasörden veri alıp değişecek klasör adı ney sonra dosya ddınıda anlıyamadım eski desya adı yani dosya adı ne olacak tabi klasöelrinde adı lazım
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,853
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
birşeyler yapmaya çalıştım

Private Sub CommandButton1_Click()
'On Error Resume Next
For i = 2 To WorksheetFunction.CountA(Worksheets("Sayfa1").Range("A2:A65000")) + 2
ilkdosya = Sheets("sayfa1").Cells(i, 2).Value
sondosya = Sheets("sayfa1").Cells(i, 3).Value
sat = 0
yenidosyaadı = Sheets("sayfa1").Cells(i, 6).Value
AD1 = "c:\" & Sheets("sayfa1").Cells(i, 1).Value
AD2 = "c:\" & Sheets("sayfa1").Cells(i, 5).Value
On Error Resume Next
If Dir(AD1) = "" Then MkDir AD1
If Dir(AD2) = "" Then MkDir AD2
For j = ilkdosya To sondosya
eski = AD1 & "\" & ilkdosya & ".jpg"
yeni = AD2 & "\" & yenidosyaadı + sat & ".jpg"
sat = sat + 1
FileCopy eski, yeni
Next
Next
End Sub
 
Son düzenleme:
Katılım
17 Kasım 2004
Mesajlar
43
Çok teşekkür ediyorum üstat. Son gönderdiğiniz örnek işimi görüyor. Birkaç ufak değişiklikle tam istediğim gibi olacak. Kalan düzenlemeyi ben yaparım artık.

İşlerinizde kolaylıklar diliyorum.
 
Üst