beydere Posted September 1, 2010 Share Posted September 1, 2010 FileCopy ( @UserProfileDir & "" , "D:\YEDEK", 1 ) FileInstall( @UserProfileDir & "" , "D:\YEDEK", 1 ) ikisini de denedim fakat kopyalamıyor. Yardım edermisiniz :S Link to comment Share on other sites More sharing options...
blue_life Posted September 1, 2010 Share Posted September 1, 2010 Sen klasörmü kopyalatmak istiyorsun? DirCopy(@UserProfileDir,"D:\YEDEK\",1) Tabi yukarıdaki örnekte bazı dosyalar, sistem tarafından açık olduğu için işlem başarısız olabilir... Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 1, 2010 Share Posted September 1, 2010 Peki bende ozaman sorunun devamını getireyim Kopyalanacak klasör ve alt klasörlerine attrib uygulatalım desek o dizine bunu uygulatacak komut nedir? Sanırım arkadaş format sonrası yedekleri (belgeler- desktop - sık kullanılanlar "gibi") tek tıklamayla geri yükletmek istiyor. Link to comment Share on other sites More sharing options...
blue_life Posted September 1, 2010 Share Posted September 1, 2010 @Hemoroid FileSetAttrib("C:\YEDEK","+R",1) ;Alt klasörlerle birlikte salt okunur yapar. Detaylı bilgi için yardım dosyasındaki FileSetAttrib konusuna bak. Yardım dosyasını hızlı kullanmak için; Scitede kodun üzerine faren ile bir kez tıklat ve sonra F1 tuşuna bas. Link to comment Share on other sites More sharing options...
blackman12 Posted September 1, 2010 Share Posted September 1, 2010 FileSetAttrib ("C:\yedek", "-RS" ,1 ) Link to comment Share on other sites More sharing options...
beydere Posted September 2, 2010 Author Share Posted September 2, 2010 @Blue_life verdiğin kod dosyayı kopyalamıyor :S Link to comment Share on other sites More sharing options...
blue_life Posted September 2, 2010 Share Posted September 2, 2010 @beydere Sorun nedir? Hiç bir doyamı kopyalanmıyor? Zaten bazı dosyaların açık olduğu ve kullanıldığı için hata verebileceğini söylemiştim Link to comment Share on other sites More sharing options...
beydere Posted September 2, 2010 Author Share Posted September 2, 2010 @blue_life Sorun yok ki Hiçbir şeyi kopyalamıyor. yarım saattim coppy ile ilgili ne kadar komut varsa denedim. Ama hiçbiri çalıştırmadı. Acaba diyorum folder kopyalamayı yapmadılar mı :S Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 2, 2010 Share Posted September 2, 2010 Aynen bende yorumunu görür görmez denemeye başladım. Hiçbir klasör oluşturmadı. Ardından DirCreate ile kendim oluşturup kopyalatayım dedim klasör oluştu ama içerik yok. Attrib yapmama ramen elde var sıfır. Link to comment Share on other sites More sharing options...
MostWanted Posted September 2, 2010 Share Posted September 2, 2010 FileCopy("C:\eskiyer\*.*", "C:\yenisi\",9) Bu olmuyor mu? Link to comment Share on other sites More sharing options...
beydere Posted September 2, 2010 Author Share Posted September 2, 2010 Vay bee ne soru sormuşum @talha_252 tek kod olarak hiçbiri çalışmıyor. Senin dediğin kod klasörleri almıyor hem sadece icinde .ini - .bat gibi uzantısı olan dosyaları alıyor. Link to comment Share on other sites More sharing options...
MostWanted Posted September 2, 2010 Share Posted September 2, 2010 Soruda hiç bir şey yok bence uygulamada var. FileSetAttrib("D:\autoit scriptleri\kaspersky\","-RS", 1)FileCopy("D:\autoit scriptleri\kaspersky\*", "C:\kaspersky\", 9) Ben bu kodları denedim mesela kendi bilgisayarım da çok güzel çalıştı. Link to comment Share on other sites More sharing options...
beydere Posted September 2, 2010 Author Share Posted September 2, 2010 Bende neden olmuyor o zmn :S FileSetAttrib( @UserProfileDir & "\","-RS", 1) FileCopy( @UserProfileDir & "\*", "D:\YEDEK\", 9) Link to comment Share on other sites More sharing options...
MostWanted Posted September 2, 2010 Share Posted September 2, 2010 Onun yerine normal bi klasör dene olacağını göreceksin.Muhtemelen o anki çalışan uygulamalar ya da windows izin vermiyor.. Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 2, 2010 Share Posted September 2, 2010 Dostum bunu dene. Global $Hedef = @UserProfileDir & "\YEDEK\" Global $Kaynak = "D:\YEDEK\*" FileSetAttrib ($Kaynak,"-RS",1) FileCopy ($Kaynak,$Hedef,9) Öğreniyorum Link to comment Share on other sites More sharing options...
blue_life Posted September 2, 2010 Share Posted September 2, 2010 Bir ihtimal uygulamayı admin olarak çalıştırmanız işe yarayabilir. Autoit kodlamanın başına #RequireAdmin ekleyip deneyin. Ayrıca, aslında ilgili dizindeki dosyalar tek tek tespit edilip kopyalamak çözüm olabilir. @Hemoroid Aramıza hoş geldin. Autoit kapacaksın gibime geliyor Başarılar... Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 2, 2010 Share Posted September 2, 2010 Hoşbulduk Gereksiz bile olsa birçok kodla uğraşıyorum daha hızlı öğrenmek için. Birde yukarıdaki kodla ilgili şöyle birşey mümkündür sanırım. TrayTip eklenmiş hali burada. Global $Hedef = @UserProfileDir & "\YEDEK\" Global $Kaynak = "D:\YEDEK\*" FileSetAttrib ($Kaynak,"-RS",1) FileCopy ($Kaynak,$Hedef,9) If FileExists($Kaynak) Then TrayTip("Dikkat", "Kopyalama işlemi yapılıyor", 5) Sleep(3000) TrayTip("", "", 5) Else TrayTip("Dikkat", "Kopyalanacak klasör bulunamadı", 5) Sleep(3000) TrayTip("", "", 5) EndIf Olayı biraz daha geliştirip hedef ve kaynak klasörlerin boyutlarını karşılaştırsak. Boyutlar birbirini tuttuğunda bir TrayTip daha açtırıp ("Kopyalama Tamamlandı", "Kopyalanan Dosya Boyutu MB", 5) yazdırsak. Böyle bir kod eklenebilir değilmi ? Link to comment Share on other sites More sharing options...
blue_life Posted September 2, 2010 Share Posted September 2, 2010 @Hemoroid DirGetSize ile klasör boyutunu alıp karşılaştırma yapabilirsin... If DirGetSize("Hedef klasör") = DirGetSize("Kopyalanan konum") Then ;iki klasörün boyutu eşit ise; ;Kolarını yaz Else; Deyilse ;Kolarını yaz EndIf Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 2, 2010 Share Posted September 2, 2010 Tam şöyle yapıyordum ki.. Gerisini kodlar açıklasın Global $Hedef_mb = DirGetSize($Hedef) Global $Kaynak_mb = DirGetSize($Kaynak) if $Hedef_mb = $Kaynak_mb Then TrayTip("Kopyalama Tamamlandı", "[b]BURAYA SIZE YAZDIRMAK İSTİYORUM[/b]", 5) Sleep(3000) TrayTip("", "", 5) EndIf Link to comment Share on other sites More sharing options...
blue_life Posted September 2, 2010 Share Posted September 2, 2010 @Hemoroid Güzel Konuya gelirsek artık son noktayı koyalım... Gerekli kodlar... #RequireAdmin If _BL_DIR_COPY(@UserProfileDir,"D:\YEDEK\",1) Then MsgBox(64,"","Başarılı bir şekilde tüm dosyalar kopyalandı") Else MsgBox(16,"","Doya kopyalama sırasında sorun oluştu!") EndIf Func _BL_DIR_COPY($SOURCE,$TARGET,$OVER_WRITE = 0) If StringRight($SOURCE,1) = "\" Then $SOURCE = StringTrimRight($SOURCE,1) If StringRight($TARGET,1) = "\" Then $TARGET = StringTrimRight($TARGET,1) If not FileExists($SOURCE) Then SetError(1,0,False) Local $BL_SEARCH = FileFindFirstFile($SOURCE & "\*.*"),$BL_FILE,$BL_COPY = True If $BL_SEARCH = -1 Then Return SetError(1,0,False) If not FileExists($TARGET) Then DirCreate($TARGET) While 1 $BL_FILE = FileFindNextFile($BL_SEARCH) If @error Then ExitLoop If StringInStr(FileGetAttrib($SOURCE & "\" & $BL_FILE),"D") Then $BL_COPY = _BL_DIR_COPY($SOURCE & "\" & $BL_FILE,$TARGET & "\" & $BL_FILE,$OVER_WRITE) Else If $OVER_WRITE <> 0 And FileExists($TARGET & "\" & $BL_FILE) Then FileSetAttrib($TARGET & "\" & $BL_FILE,"-RS") If FileCopy($SOURCE & "\" & $BL_FILE,$TARGET & "\" & $BL_FILE,9) = 0 Then $BL_COPY = False Else If FileCopy($SOURCE & "\" & $BL_FILE,$TARGET & "\" & $BL_FILE) = 0 Then $BL_COPY = False EndIf EndIf WEnd FileClose($BL_SEARCH) Return $BL_COPY EndFunc Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 2, 2010 Share Posted September 2, 2010 Bir noktada ben koyabilirmiyim Kopyalama mesajlarını TrayTip olarak, Bitiş mesajınıda şöyle gösteren kod. Global $Hedef_mb = DirGetSize(@UserProfileDir & "\YEDEK\",1) Global $Kaynak_mb = DirGetSize("D:\YEDEK\*",1) Global $Hedef = @UserProfileDir & "\YEDEK\" Global $Kaynak = "D:\YEDEK\*" FileSetAttrib ($Kaynak,"-RS",1) FileCopy ($Kaynak,$Hedef,9) If FileExists($Kaynak) Then TrayTip("Dikkat", "Kopyalama işlemi yapılıyor", 5) Sleep(3000) TrayTip("", "", 5) Else TrayTip("Dikkat", "Kopyalanacak klasör bulunamadı", 5) Sleep(3000) TrayTip("", "", 5) EndIf If IsArray($Hedef_mb) Then Msgbox(0,"Kopyalama Tamamlandı","Kopyalanan KB : " & $Hedef_mb[0] & @LF _ & "Dosya:" & $Hedef_mb[1] & @LF & "Alt Klasör:" & $Hedef_mb[2] & @LF _ ) EndIf Tek derdim Endİf in ardından kopyalamanın bitmesini bekleyecek bir kod. Uğraştım didindim olmadı. Fonksyon olayına girmek için çok gencim Bu haliyle halledemezsem kafayı yerim Link to comment Share on other sites More sharing options...
beydere Posted September 3, 2010 Author Share Posted September 3, 2010 @Blue_life hocam ve @hemoroid teşekkür ederim bende bir kod bulmuştum yavaş yavaş onun üzerinde çalışıyordum yapmak için. Çünkü tek kod ile olacak bir olay değil bu. Ama teşekkür ederim kafamı çatlatmaktan kurtardınız Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 3, 2010 Share Posted September 3, 2010 Ozaman son bir kod daha vereyim bari. Yukarıdaki olayı çözdüm kendi çapımda Öncelikle bu kodu copy.exe olarak compile edip bir kenarda tut. $Hedef = @UserProfileDir & "\YEDEK\" $Kaynak = "D:\YEDEK\*" $Kopyala = FileCopy($Kaynak,$Hedef,9) FileSetAttrib ($Kaynak,"-RS",1) RunWait($Kopyala) If FileExists($Kaynak) Then TrayTip("Dikkat", "Kopyalama işlemi yapılıyor", 5) Sleep(3000) TrayTip("", "", 5) Else TrayTip("Dikkat", "Kopyalanacak klasör bulunamadı", 5) Sleep(3000) TrayTip("", "", 5) EndIf Sonra bu kodu compile etmeden önce au3 dosyasının yanına önceki copy.exe yi koyup sonra compile et. Copy.exe dosyasını yeni oluşturduğun exenin içine gömecek. Bu kodla çıkarttığın exe tek başına işi hallediyor.. FileInstall("copy.exe",@TempDir & "\pe.exe") ;----önceki exeyi autoite gömdük temp'e çıkartıp adını pe olarak değiştirdik RunWait(@TempDir & "\pe.exe") ;----çalıştırıp bekledik, copy exe çalışmayı durdurana kadar alt satıra geçmiyoruz FileDelete(@TempDir & "\pe.exe") ;----tempte kalıntı bırakmıyoruz $Hedef_mb = DirGetSize(@UserProfileDir & "\YEDEK\",1) ;----hedefteki dosyamızın boyutunu öğreniyoruz ;-- Bitiş mesajı If IsArray($Hedef_mb) Then Msgbox(0,"Kopyalama Tamamlandı", "Kopyalanan dosya boyutu : " & $Hedef_mb[0] & @LF _ & "Dosya:" & $Hedef_mb[1] & @LF & "Alt Klasör:" & $Hedef_mb[2] & @LF _ ) EndIf Uyarı mesajını üstte verdiğim gibi detaylı veriyor ve sorunsuz çalışıyor Link to comment Share on other sites More sharing options...
djonur007 Posted September 4, 2010 Share Posted September 4, 2010 hedef ve kaynağı bir "ini" dosyasına bağlayıp işi dahada kolaylaştırabilirsiniz. Link to comment Share on other sites More sharing options...
OzgrGvnc Posted September 4, 2010 Share Posted September 4, 2010 Daha yeniyim:) Nasıl olacağını anlatırmısın bundan sonra öyle yaparım Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.