Milyonlarca dosyayı yıl_ay klasörlerine taşıma gruplama

Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
efatura ile ilgili windows /temp altında biriken milyonlarca dosyayı erişilebilir hale getirmek için bir kaç gündür çalışıyorum.

Aşağıdaki şekilde bir kod hazırladım. Örnek kodlardan bunu oluşturmak bile karışık bir durumdu. :) Batch file i sadece copy için kullanınca böyle oluyor :)

Sonuç olarak milyonlarca dosyayı 2017_02 şeklinde yıl ve ay olarak dosya değiştirilme tarihine göre ayrı klasörlerde gruplamak isterseniz aşağıdaki kodları kullanabilirsiniz.

src kaynak klasör, dest dosyaların taşınacağı ana klasör.
Alt klasörleri desteklemez.

Milyonlarca dosya olduğunda tek bir bat dosyası belli bir süre sonra, saniyede 100 lerce dosya kopyalaması gerekirken, bir kaç saniyede bir dosya taşıyacak durumu geliyor.

Bu yüzden taşıma yapan bat dosyasını her 1000 taşımadan sonra kapatıp yeniden açacak dongu.bat dosyası hazırlandı.

20 sn de bin dosya taşıma ile dahada hızlanacaktır.
Ayrıca ekran durağan durmasın diye sayıcı eklendi.

Taşıma işlemi olması için dongu.bat dosyasını çalıştırınız.


Dongu.bat

Kod:
rem @echo off
:yeniden
  start /wait call tasi.bat
  goto :yeniden
pause
tasi.bat

Kod:
@echo off
setlocal enableextensions enabledelayedexpansion

    set "src=P:\EFATURAWEBSRV\2017fat"
    set "dest=P:\EFATURAWEBSRV\tarihli"
    set /a z=0
    for %%F in ("%src%\*") do (
      echo "%%~tF"
      set /a z+= 1
      echo !z!
      if !z! EQU 1000 goto :son     

      for /F "tokens=1-4 delims=/. " %%A in ("%%~tF") do (
          rem echo %%C_%%B
          if not exist "%dest%\%%C_%%B" mkdir "%dest%\%%C_%%B"
          move "%%~fF" "%dest%\%%C_%%B"
      )
    )
:son
endlocal
exit
 
Son düzenleme:
Katılım
3 Mart 2008
Mesajlar
281
Excel Vers. ve Dili
2013 Türkçe
Altın Üyelik Bitiş Tarihi
14/05/2022
Güzel bir çalışma olmuş yarın deneyeceğim kesinlikle

Emeğinize sağlık :)
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Güzel bir çalışma olmuş yarın deneyeceğim kesinlikle

Emeğinize sağlık :)
Her zaman olduğu gibi yedek almadan denemeyin.
Yada en azından bir iki aylık ayrı bir klasöre kopyalayıp sonucu görün sonra asıl verilerde deneyin.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Ben de konuyla ilgili arkadaşlara denemelerini önereceğim.
Amme hizmeti görmek böyle oluyor işte, tebrik ve teşekkürler Sayın AKDENİZ.
.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Ben teşekkür ederim arkadaşlar,

Herkese gerekli bir konu değil ama ihtiyacı olanlar için kullanışlı bir durum.
Dün akşam programı çalıştırmıştım hala gruplama devam ediyor.

tüm yıl_ay klasörleri oluşmuş içlerini dolduruyor. Bitmesi biraz daha zaman alacak. Ancak bittiğinde rahat bir şekilde dosya arayıp inceleyebileceğimi bilmek güzel :)
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Güncelleme:

Milyonlarca dosya olduğunda tek bir bat dosyası belli bir süre sonra, saniyede 100 lerce dosya (dosya boyutu kb ise) kopyalaması gerekirken, bir kaç saniyede bir dosya taşıyacak durumu geliyor. Sanırım ilgili bat dosyası için gecici bellek ile iligili bir sorun oluşuyor.

Bu yüzden taşıma yapan bat dosyasını her 1000 taşımadan sonra kapatıp yeniden açacak dongu.bat dosyası hazırlandı.

Taşıma işlemi olması için dongu.bat dosyasını çalıştırınız.

20 sn de bin dosya taşıma ile dahada hızlanacaktır.
Ayrıca ekran durağan durmasın diye sayıcı eklendi.
 
Üst