Forum

Klasör iç...
 
Bildirimler
Hepsini Temizle

Klasör içindeki son güncellenen dosyayı kopyalayan bat dosyası

9 Yazılar
3 Üyeler
0 Reactions
759 Görüntüleme
(@ibrahimuslu)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Selamlar, benim isteğim bir klasör içindeki .bak uzantılı son yedeklenen dosyayı (aynı uzantılı son 5 güne ait kayitlar var klasör içinde) başka bir klasöre başka bir isimle kopyalacak bir bat dosyası gerekli. Teşekkürler saygılar..

 
Gönderildi : 26/12/2015 05:28

(@marufarslan)
Gönderiler: 168
Reputable Member
 

Kırmızı işaretli olan alanlara dikkat edelim,

özellikle %dd% -2 demek son iki güne ait dosyalar demek.

Kolay gelsin.

----------------------------------------------------------------

@echo off

for /f "tokens=1" %%i in ('date /t') do set thedate=%%i

set mm=%thedate:~3,2%
set dd=%thedate:~0,2%
set yyyy=%thedate:~6,4%
echo.
echo Yedekleme Tarihi : %dd%-%mm%-%yyyy% %time%
echo.

if %dd%==08 (set dd=8 ) else (if %dd%==09 (set dd=9 ) )
if %mm%==08 (set mm=8 ) else (if %mm%==09 (set mm=9 ) )

set /A dd=%dd% - 2
set /A mm=%mm% + 0
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
if %mm%==12 goto SET31

goto ERROR

:SET31
set /A dd=31 + %dd%
goto DONE

:SET30
set /A dd=30 + %dd%
goto DONE

:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto DONE

:SET29
set /A dd=29 + %dd%

:DONE
if /i %dd% LSS 10 set dd=0%dd%
if /I %mm% LSS 10 set mm=0%mm%
set YedekTarih=%mm%-%dd%-%yyyy%

set error=E:\yedekler\NasYedek\GUNLUK\xcopy.error.log
set kaynak1=E:\yedekler
set hedef=\\192.168.62.1\yedek
set backupcmd= /Y /E /I /s /f /d:%YedekTarih%

echo %date% %time% >> %error%

echo Yedek islemi Basladi %YedekTarih% %time% > Yedekbasladi.log
xcopy %kaynak1%\SysState\*.* %hedef%\d\SysState %backupcmd% >> 1SysStateYedekDurum.log  2>> %error%

"Dalgasız denizde, herkes kaptandır."

 
Gönderildi : 26/12/2015 23:58

(@marufarslan)
Gönderiler: 168
Reputable Member
 

Kodu kullana bildiniz mi?

"Dalgasız denizde, herkes kaptandır."

 
Gönderildi : 28/12/2015 15:39

(@ibrahimuslu)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Selamlar, bulduğum bir komut var ama son dosyayı cekemiyor komutta yardım edebilecek var mı acaba Teşekkürler,

 

del /Q d:\backup\*.*

@ECHO OFF
FOR /F "tokens=2 delims= " %%V IN ("%DATE%") DO SET TDY=%%V
xcopy /y "\\asdasds1\b$\Backup\ElsystemNet\*.*" "D:\BACKUP\*.*" /d:%TDY%
xcopy /y "\\asdasds1\b$\Backup\ElsystemNetDataProcess\*.*" "D:\BACKUP\*.*" /d:%TDY%
xcopy /y "\\asdasds1\b$\Backup\ElsystemNetDocuments\*.*" "D:\BACKUP\*.*" /d:%TDY%
xcopy /y "\\asdasds1\b$\Backup\ElsystemNetDWH\*.*" "D:\BACKUP\*.*" /d:%TDY%
xcopy /y "\\asdasds1\b$\Backup\ElsystemNetTrack\*.*" "D:\BACKUP\*.*" /d:%TDY%

SET TDY=

rename d:\Backup\ElsystemNet_Full*.* ElsystemNet_Full.bak
rename d:\Backup\ElsystemNetDataProcess_Full*.* ElsystemNetDataProcess_Full.bak
rename d:\Backup\ElsystemNetDocuments_Full*.* ElsystemNetDocuments_Full.bak
rename d:\Backup\ElsystemNetDWH_Full*.* ElsystemNetDWH_Full.bak
rename d:\Backup\ElsystemNetTrack_Full*.* ElsystemNetTrack_Full.bak

 

 

 
Gönderildi : 25/01/2016 11:28

(@ibrahimuslu)
Gönderiler: 5
Active Member
Konu başlatıcı
 

kodu denedim ama istediğim son gün datası yukarda yazdığım komutu eskiden aynı benim istediğim şekilde biri kullanmış onu editlersek tam çözümü olabilir

 
Gönderildi : 25/01/2016 11:33

(@resulsoydas)
Gönderiler: 1658
Noble Member
 

Hiç kastırmaya gerek yok. Robocopy kullanın. /MIR parametresi ile klasör içindeki değişiklikleri hedefe uygular. Böylece sadece değişiklik olanları hedefe kopyalayacağından yedeğiniz daha kısa sürecektir. Yine aynı şekilde silinen bir dosyayı karşıdan da silecektir.

 
Gönderildi : 25/01/2016 11:47

(@ibrahimuslu)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Hiç kastırmaya gerek yok. Robocopy kullanın. /MIR parametresi ile klasör içindeki değişiklikleri hedefe uygular. Böylece sadece değişiklik olanları hedefe kopyalayacağından yedeğiniz daha kısa sürecektir. Yine aynı şekilde silinen bir dosyayı karşıdan da silecektir.

Dediğiniz gibi hız önemli 1,5 Tb 'lık veriden bahsediyorum, günlük olarak db restore edilecek dosyalar farklı bir sunucudan db restore edilecek sunucuya aktarılacak ama çekilen sunucudaki datalar duracak sadece kopyalama yapılması gerekli her hangi bir sorun durumunda sunucudan kontrolu gerekli malum..

 
Gönderildi : 25/01/2016 12:01

(@resulsoydas)
Gönderiler: 1658
Noble Member
 

Kaynak dizindeki dosyalara ellemez. Test ortamında deneyin.

 
Gönderildi : 25/01/2016 13:22

(@ibrahimuslu)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Kaynak dizindeki dosyalara ellemez. Test ortamında deneyin.

 

Hocam teşekkürler şöyle bir şey işimi görüyor.. Denedim işe yaradı..

 

ROBOCOPY C:\Users\ibrahimu\Desktop\1 C:\Users\ibrahimu\Desktop\2 /maxage:1

 

Fakat... 

 

Çektiğim dosyanın ismini değiştirmek için komut biliyormusunuz restore'yide oto yapmak için sabit hep aynı isim gerekli çektiğim dosya isimlerinin sonunda şöyle ibareler var.

Örnek Son 5 Gün..

 

ElsystemNetTrack_Full_20160121010002.bak

ElsystemNetTrack_Full_20160122010003.bak

ElsystemNetTrack_Full_20160123010004.bak

ElsystemNetTrack_Full_20160124010002.bak

ElsystemNetTrack_Full_20160125010002.bak

 

yardımlarınızı bekliyorum..

 
Gönderildi : 25/01/2016 22:54

Paylaş: