Forum
merhaba
benim bir bat dosyamın içerisinde 01052011-055.gtf diye bir dosyam var bu dosyayı hergün bir yerden bir yere kopyalıyorum
01052011 tarihini hergün otomatik devam etmesini istiyorum yani ertesi gün 02052011-055.GTF olsun
bunu bat dosyası ile nasıl gerçekleştiririm...
Tam olarak bat dosyanızın içeriğini yazarmısınız.
%date% değişkenini bir deneyin isteseniz.
COPY \\192.168.113.200\DATI\13052011-003.GTF C:\DATI\
COPY \\192.168.114.200\DATI\13052011-004.GTF C:\DATI\
COPY \\192.168.161.200\DATI\13052011-034.GTF C:\DATI\
COPY \\192.168.144.200\DATI\13052011-038.GTF C:\DATI\
BU DOSYALARI UZAKTAKİ BİLGİSAYARLARDAN ALIYORUM KENDİ BİLGİSAYARIMA KOPYALIYORUM
AMA 13052011-038 BU DOSYALARI HERGÜN OTOMATİK TARİHİN ARTMASI İÇİN NE YAPMALIYIM BAT DOSYASI İLE
Merhabalar;
Script nizin başına aşağıda ki kodu ekleyelim. Ardından da dosya adını %Cdate% ile başlayacak şekilde değiştirelim. Örneğin %Cdate%.gtf gibi
FOR /F "TOKENS=1,2 DELIMS=/ " %%A IN ('DATE /T') DO SET mm=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('DATE /T') DO SET dd=%%B
FOR /F "TOKENS=3* DELIMS=/ " %%A IN ('DATE /T') DO SET yyyy=%%B
Set Cdate=%dd%_%mm%_%yyyy%
Kolay gelsin...
OLMADI
___-005.GTF gibi bir şey çıkıyor istediğim tarihli dosya çıkmıyor
Peki demin ki script yerine sadece %date%.gtf şeklinde dener misiniz?
Kolay gelsin...
farketmiyor ___-005.gtf kopyalamaya çalışıyor veya ____.gtf kopyalamaya çalışıyor...
İlginç, komut satırında %date% yazarak çalıştırıp çıktısının tarih şeklinde olup olmadığını kontrol eder misiniz?
Peki baştan başlayalım [:)]. Bu dosyalar normalde var olan dosyalar mı? Yoksa bir yedek programı tarafından mı oluşturuluyor?
Eğer bir yedek programı tarafından oluşturuluyor ise yedeği olşturan programda bu tarz bir ayar yapılabilir. Ya da dosyalar copyalanmadan önce isimleri değiştirip sonra kopyalama işlemi yapılabilir.
tek bir dosya için düşünürsek
Normal
0
21
false
false
false
TR
X-NONE
X-NONE
MicrosoftInternetExplorer4
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
echo off
FOR /F "TOKENS=1,2 DELIMS=/ " %%A IN ('DATE /T')
DO SET mm=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('DATE /T')
DO SET dd=%%B
FOR /F "TOKENS=3* DELIMS=/ " %%A IN ('DATE /T') DO
SET yyyy=%%B
Set Cdate=%dd%_%mm%_%yyyy%
ren 13052011-003.GTF %Cdate%.gtf
COPY \\192.168.113.200\DATI\%Cdate%.gtf C:\DATI\%Cdate%.gtf
şeklinde deneyebilir misiniz. Tabi ren ile dosyayı yeniden adlandırdığımız bölümde dosyanın yolunu tam olarak yazmanız gerekecektir.
Kolay gelsin...
xcopy'nin /d özelliği işinize yarayabilir. eğer tarih vermezseniz yalnızca son bir gün içerisinde değişen dosyaları kopyalıyor.
xcopy \\192.168.145.200\DATI\*-016.GTF C:\DATI\ /d gibi bir komutun işe yaraması lazım.
Bu da benim SQL i yedek alıp ismini değiştirdiğim bat dosyası
öncelikle datadb.bak diye bir dosya varsa sil. Sonra sql e bağlan. Sonra YEdek alam scriptini çalıştır. Sonra hedef klasöre git ve datadb.bak dosyasının adını TARIHdatadb.bak. Bundan sonrada kopyalama yada taşıma yapabilirsin. Dikkat %DATE% sistem ayarlarında tarih formatı nasıl ayarlandıysa öyle verir. Benimkinde 01.01.1990 olarak çıkıyor mesela
echo off
CD C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup
del datadb.bak
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S REKHUNTER\SQLEXPRESS -U BackupUser -P UserPassword -i "C:\Documents and Settings\SQLSERVER\Belgelerim\SQL Server Management Studio Express\Projects\gunlukyedekalma.sql"
CD C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\
REN datadb.bak %DATE%datadb.bak