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

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
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 :)
 

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
79 görüntüleme var cevap yok, anlıyorum sorum zor ama işin ucundan tutacak bir üstad vardır heralde
 
Katılım
10 Mart 2013
Mesajlar
187
Excel Vers. ve Dili
2016 - İngilizce
Altın Üyelik Bitiş Tarihi
29.05.2018
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.
 
Katılım
24 Nisan 2005
Mesajlar
3,680
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
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.
 

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
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."
 
Katılım
9 Mayıs 2008
Mesajlar
48
Excel Vers. ve Dili
Excel 2010/2013 TR
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:

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
ç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:

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
ç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.
 
Katılım
9 Mayıs 2008
Mesajlar
48
Excel Vers. ve Dili
Excel 2010/2013 TR
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:

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
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
 

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
Netcini nerelerdesin :)
 
Üst