- 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
tasi.bat
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
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: