Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 | 2 |

 

  Вопрос: Просканировать сеть и разослать файл по шарам Добавлено: 12.01.10 21:54  

Автор вопроса:  cbh

Ответить

  Ответы Всего ответов: 19  

Номер ответа: 16
Автор ответа:
 cbh



Вопросов: 2
Ответов: 10
 Профиль | | #16 Добавлено: 15.01.10 19:03
Значит так, специально создал сетку с нуля между двумя машинами. Оба в одной рабочей группе. Антивируса нет.
Расшарил папки и там и там. Пробовал раздавать файл как с локального диска, так и с расшаренных папок.
Я так понимаю, я xто я все таки что-то забыл или не так делаю. Вот ниже тот код который отвечает за копирования.
Можешь обьяснить что мне и куда прописать.Файл скажем лежит в корне диска С:\test.txt (C не расшарен)

 
  1.   Set fso  = CreateObject("Scripting.FileSystemObject")
  2.    Set sh   = CreateObject("WScript.Shell")
  3.    Set oWMI = GetObject("WinMgmts:{impersonationLevel=impersonate}!//./root/cimv2")
  4.     
  5.    Res = sh.Run("subst T: ""\\" & host & "\" & share & Chr(34), , True)
  6.     
  7.    Set oSelQ = oWMI.ExecQuery("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' And Path = '\\test.txt'")
  8.     
  9.    For Each file In oSelQ
  10.    Res=file.Copy(fso.BuildPath("T:", file.FileName & "." & file.Extension))
  11.    Next
  12.    
  13.    Res = sh.Run("subst T: /D", , True)



П.С я понимаю что я просто туплю.

Ответить

Номер ответа: 17
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #17 Добавлено: 16.01.10 05:45
П.С я понимаю что я просто туплю.
:) Именно. Или сказывается незнание WMI, хотя я уже говорил, что путь "Path" должен начинаться и заканчиваться "\\". Если файл один, то вместо выражения "WHERE Drive = 'C:' And Path = '\\test.txt'" можно использовать "WHERE Name = 'C:\\test.txt'". Но проще Один раз определить папку, из которой будут копироваться файлы, и забыть про прописывание Каждый Раз нового файла в скрипте. Если хочешь из корня диска, то запрос должен выглядеть так "WHERE Drive = 'C:' And Path = '\\'", только копироваться будут ВСЕ файлы из корня диска. Оно тебе надо? Определи диск и папку. "WHERE Drive = 'C:' And Path = '\\Razdacha\\'"
здесь
  1. Set oSelQ = oWMI.ExecQuery("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' And Path = '\\path\\to\\folder\\'")
ты запросом выбираешь ВСЕ файлы, находящиеся на диске "Drive = 'C:'" в папке "Path = '\\path\\to\\folder\\'". Здесь
  1. For Each file In oSelQ
  2.     Res=file.Copy(fso.BuildPath("T:", file.FileName & "." & file.Extension))
  3. Next
ты копируешь КАЖДЫЙ файл, находящийся в папке раздачи в найденную шару (которую подключаешь как локальный диск).
Надеюсь, что поймешь :)

Ответить

Номер ответа: 18
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #18 Добавлено: 16.01.10 07:24
Кстати
Значит так, специально создал сетку с нуля между двумя машинами.
Это не требуется для проверки. Т.к. ты перебираешь через сетевое окружение, то комп, с которого производишь раздачу, ТОЖЕ попадает в твой список. Поэтому, если не хочешь, что бы копировалось все это повторно на твой комп, то: либо закрывай у себя шары на запись, либо вставляй проверку...
PS Рабочий скрипт под висту
  1. Set objNetwork = CreateObject("Shell.Application").NameSpace(&H12) ' получение объекта "Сеть", которое сразу содержит имена компьютеров
  2.  
  3. Set oComputers =  objNetwork.Items()
  4. For Each Comp In oComputers
  5. Set objCompItem = Comp.GetFolder
  6. For Each oItem In objCompItem.Items()
  7. Copy Comp, oItem
  8. Next
  9. Next
  10.  
  11. Sub Copy(host, share)
  12. Dim fso, sh, oWMI, oSelQ, file
  13. Dim Res
  14.  
  15. On Error Resume Next
  16.  
  17. Set fso  = CreateObject("Scripting.FileSystemObject")
  18. Set sh   = CreateObject("WScript.Shell")
  19. Set oWMI = GetObject("WinMgmts:{impersonationLevel=impersonate}!//./root/cimv2")
  20.  
  21. Res = sh.Run("subst T: ""\\" & host & "\" & share & Chr(34), , True)
  22. Set oSelQ = oWMI.ExecQuery("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' And Path = '\\Path\\To\\Folder\\'")
  23.  
  24. For Each file In oSelQ
  25. Res=file.Copy(fso.BuildPath("T:", file.FileName & "." & file.Extension))
  26. Next
  27.  
  28. Res = sh.Run("subst T: /D", , True) ' отключение диска
  29.  
  30. Set oSelQ = Nothing
  31. Set oWmi  = Nothing
  32. Set  sh   = Nothing
  33. Set  fso  = Nothing
  34.  
  35. End Sub

Ответить

Номер ответа: 19
Автор ответа:
 cbh



Вопросов: 2
Ответов: 10
 Профиль | | #19 Добавлено: 16.01.10 13:33
все спасибо друг, разобрался, все дела правильно проблема в сетке была, служба обозреватель сети падала постоянно, из за вируса судя по всему, антивируса ведь нет. Ты голова жили бы рядом угостил бы пивом))
а пока держи мое большое спасибо

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам