• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

ağdaki kullanıcılara dosya kopyalama ve silme !!!!

  • Konbuyu başlatan Konbuyu başlatan osm87
  • Başlangıç tarihi Başlangıç tarihi
Katılım
25 Eylül 2011
Mesajlar
119
Excel Vers. ve Dili
2003-2007-2010 türkçe
Arkadaşlar merhabalar;
Forumda araştırdım ama tam istediğim şekilde bir kod bulamadım.

Ağda bilgisayarlar var firma001 den başlayıp firma900 e kadar gidiyor. Bu bilgisayarların \\firma001\c$\users adlı klasörünün içinde birden fazla kullanıcı var yani kullanıcı gidip firma003 nolu bilgisayarda oturum açarsa oraya da kullanıcısı kuruluyor.

Benim istediğim c:\abc adlı klasörümü alacak \\firma001\c$\users adlı klasörde ne kadar kullanıcı klasörü varsa (adem, hasan, ahmet, fatma vb.) bu klasörlerin içine abc klasörünü yapıştıracak. adem, hasan gibi isimler değişkenlik gösterecek ayrıca firma001den başlayıp firma900 e kadarda bilgisayar ismi olacak. Yani benim abc isimli klasörümü alacak firma001 ile firma900 arasındaki bilgisayarda \\firma001\c$\users içindeki tüm kullanıcıların içine bu dosyayı yapıştıracak.

İkinci bir isteğimde firma001 ile firma900 arasındaki bilgisayarda \\firma001\c$\users klasörü içindeki kullanıcıların dosyaları içinde belirttiğim klasörü silebilmek.

Umarım anlaşılır bir şekilde anlatmışımdır biraz karışık bir durum ama olursa çok dua ederim :)
 
79 görüntüleme var cevap yok, anlıyorum sorum zor ama işin ucundan tutacak bir üstad vardır heralde
 
Arkadaşlar merhabalar;
Forumda araştırdım ama tam istediğim şekilde bir kod bulamadım.

Ağda bilgisayarlar var firma001 den başlayıp firma900 e kadar gidiyor. Bu bilgisayarların \\firma001\c$\users adlı klasörünün içinde birden fazla kullanıcı var yani kullanıcı gidip firma003 nolu bilgisayarda oturum açarsa oraya da kullanıcısı kuruluyor.

Benim istediğim c:\abc adlı klasörümü alacak \\firma001\c$\users adlı klasörde ne kadar kullanıcı klasörü varsa (adem, hasan, ahmet, fatma vb.) bu klasörlerin içine abc klasörünü yapıştıracak. adem, hasan gibi isimler değişkenlik gösterecek ayrıca firma001den başlayıp firma900 e kadarda bilgisayar ismi olacak. Yani benim abc isimli klasörümü alacak firma001 ile firma900 arasındaki bilgisayarda \\firma001\c$\users içindeki tüm kullanıcıların içine bu dosyayı yapıştıracak.

İkinci bir isteğimde firma001 ile firma900 arasındaki bilgisayarda \\firma001\c$\users klasörü içindeki kullanıcıların dosyaları içinde belirttiğim klasörü silebilmek.

Umarım anlaşılır bir şekilde anlatmışımdır biraz karışık bir durum ama olursa çok dua ederim :)

Merhaba,

Sorununuzu doğru anladığımı umuyorum. Ben de kurumsal bir firmada çalışıyorum ve bizim de bilgisayar adlarımız A0000000 şeklinde gözükmekte. A00000001 sicilli kişi benim bilgisayarımda oturum açtığında A00000001 sicil numaralı kullanıcının bilgisayarımda Users klasöründe A000000001 olarak bir alt klasör oluşuyor. Anladığım kadarı ile siz A0000001 olarak değil de; Ali, Mehmet, Hasan gibi belirttiğiniz değişkenin yer almasını ve 900 bilgisayara da her bilgisayara ait klasörün oluşturulmasını istiyorsunuz. Bu zannımca mümkün değildir. Çünkü her kullanıcı bilgisayarı açtığında ram ve işlemci harcamaktadır. Tabii üstadlarım daha iyi bilir.
 
Merhaba,

Sorununuzu doğru anladığımı umuyorum. Ben de kurumsal bir firmada çalışıyorum ve bizim de bilgisayar adlarımız A0000000 şeklinde gözükmekte. A00000001 sicilli kişi benim bilgisayarımda oturum açtığında A00000001 sicil numaralı kullanıcının bilgisayarımda Users klasöründe A000000001 olarak bir alt klasör oluşuyor. Anladığım kadarı ile siz A0000001 olarak değil de; Ali, Mehmet, Hasan gibi belirttiğiniz değişkenin yer almasını ve 900 bilgisayara da her bilgisayara ait klasörün oluşturulmasını istiyorsunuz. Bu zannımca mümkün değildir. Çünkü her kullanıcı bilgisayarı açtığında ram ve işlemci harcamaktadır. Tabii üstadlarım daha iyi bilir.

Ben ise şu şekilde düşündüm.
Anladığım kadarı ile bu işlemi yapacak olan kullanıcı domain admin yetkisine sahip olacak.

\\firma001\c$\users dan \\firma900\c$\users a kadar bütün bağlantılara DIR çekilecek. İçindeki klasörlere (hangi klasörün kullanıcı klasörü olduğunu bilmediğimiz için) kaynak klasör ve içindeki dosyalar kopyalanacak.
 
rıdvan bey tamda anlattığınız gibi bir durum var. Ben daha iyi anlaşılır diye örneklemek istediğimden öyle bir soru oldu. Siz konuyu çok güzel özetlemişsiniz.

"Sorununuzu doğru anladığımı umuyorum. Ben de kurumsal bir firmada çalışıyorum ve bizim de bilgisayar adlarımız A0000000 şeklinde gözükmekte. A00000001 sicilli kişi benim bilgisayarımda oturum açtığında A00000001 sicil numaralı kullanıcının bilgisayarımda Users klasöründe A000000001 olarak bir alt klasör oluşuyor."
 
hamitcam hocamın linkteki linkteki kodları üzerinde değişiklik yaparak istediğinizi yapabilecek kodları ayarladım.

Ek: Kopyalamadan önce silme işlemini koda ekledim.
Silme işlemleri için halit3 hocamın linkteki kodlarında düzenleme yaptım. 2 hocama da teşekkürler :)
CMD penceresi tamamen arka planda kalsın diye, Shell (hedef,2) kodunu shell(hedef,0) olarak değiştirdim.


A sütünuna
\\Firma001\C$\users\
\\Firma002\C$\users\
...........
Şeklinde verilerinizi hazırlar ve Hedef tanımındaki C:\abc değişkenini kendinize göre ayarlarsanız, istediğiniz olur sanırım.

Xcopy; belirttiğiniz klasörü, belirttiğiniz dizine, altklasörlerle ve varsa boş klasörlerle beraber, (varsa) olan klasör ve dosyaların üzerine size sormadan kopyalar.

Umarım işinize yarar :)

Kod:
Sub liste_kopya()
sonst = Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
For hcr = 1 To sonst
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(Cells(hcr, 1))
    Set colSubfolders = objFolder.SubFolders
    For Each objSubfolder In colSubfolders
    klssil = objSubfolder & "\" & "abc"
    objFSO.DeleteFolder klssil
     hedef = "xcopy /c /s /h /y /e c:\abc " & Cells(hcr, 1) & objSubfolder.Name & "\" & "abc\"
     kopya = Shell(hedef, 0)
    Next
Next hcr
End Sub


Toplu olarak abc klasörünü silmek isterseniz.

Kod:
Sub sil()
sonst = Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
For hcr = 1 To sonst
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(Cells(hcr, 1))
    Set colSubfolders = objFolder.SubFolders
    For Each objSubfolder In colSubfolders
    klssil = objSubfolder & "\" & "abc"
    objFSO.DeleteFolder klssil
    Next
Next hcr
End Sub
 
Son düzenleme:
çok teşekkür ederim tam istediğim gibi oldu, ancak kopyalama yaparken \\Firma001\C$\users\ nolu bilgisayar kapalı ise kod orada hata veriyor yanıt alınamıyorsa bir sonraki satıra geç gibi bir şey olsa çok güzel olurdu. Birde bunu kopyalamasın da içindeki abc gibi belirttiğim klasörü bulup silsin. Yani yanlışlıkla atılırsa veya atılmış klasörü silmemiz icap ederse diye
 
Son düzenleme:
çok teşekkür ederim işimi gördüm. Başka bir konu olacak ama bu kod içerisinde yolu değiştirsem mesela abc klasörünü \\Firma001\c$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup içerisine yapıştır desem bu kodda yolu nereden değiştirmem gerekecek.
 
Rica ederim. A sütününda değişiklik yapmanız yeterli olur.

A sütünündaki verileri;
\\Firma001\c$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
\\Firma002\c$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
.....

Olarak düzenleyebilirsiniz. :)


Ek: aşağıdaki satırda bir yanlışlık olmuş. Celss(1,1) kodunu Cells(hcr,1) olarak değiştirdim. Eski haliyle sadece ilk sıradaki bilgisayara kopyalama yapacaktı. :)

hedef = "xcopy /c /s /h /y /e c:\abc " & Cells(hcr, 1) & objSubfolder.Name & "\" & "abc\"
 
Son düzenleme:
netcini şöyle bir sorun var :) \\Firma001\c$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\ dizinine belirttiğim klasörü kopyalamıyor ama users klasörüne ne istiyorsam kopyalıyorum kısaca users dışında bir yere kopyalama yapmıyor malesef
 
Netcini nerelerdesin :)
 
Geri
Üst