Страница: 1 | 2 |
|
Вопрос: Просканировать сеть и разослать файл по шарам
|
Добавлено: 12.01.10 21:54
|
|
Номер ответа: 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\\'"
здесь - Set oSelQ = oWMI.ExecQuery("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' And Path = '\\path\\to\\folder\\'")
ты запросом выбираешь ВСЕ файлы, находящиеся на диске "Drive = 'C:'" в папке "Path = '\\path\\to\\folder\\'". Здесь - For Each file In oSelQ
- Res=file.Copy(fso.BuildPath("T:", file.FileName & "." & file.Extension))
- Next
ты копируешь КАЖДЫЙ файл, находящийся в папке раздачи в найденную шару (которую подключаешь как локальный диск).
Надеюсь, что поймешь
Ответить
|
Номер ответа: 18 Автор ответа: AxeL
ICQ: 264730390
Вопросов: 2 Ответов: 106
|
Профиль | | #18
|
Добавлено: 16.01.10 07:24
|
Кстати Значит так, специально создал сетку с нуля между двумя машинами. Это не требуется для проверки. Т.к. ты перебираешь через сетевое окружение, то комп, с которого производишь раздачу, ТОЖЕ попадает в твой список. Поэтому, если не хочешь, что бы копировалось все это повторно на твой комп, то: либо закрывай у себя шары на запись, либо вставляй проверку...
PS Рабочий скрипт под висту - Set objNetwork = CreateObject("Shell.Application").NameSpace(&H12)
-
- Set oComputers = objNetwork.Items()
- For Each Comp In oComputers
- Set objCompItem = Comp.GetFolder
- For Each oItem In objCompItem.Items()
- Copy Comp, oItem
- Next
- Next
-
- Sub Copy(host, share)
- Dim fso, sh, oWMI, oSelQ, file
- Dim Res
-
- On Error Resume Next
-
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set sh = CreateObject("WScript.Shell")
- Set oWMI = GetObject("WinMgmts:{impersonationLevel=impersonate}!//./root/cimv2")
-
- Res = sh.Run("subst T: ""\\" & host & "\" & share & Chr(34), , True)
- Set oSelQ = oWMI.ExecQuery("SELECT * FROM CIM_DataFile WHERE Drive = 'C:' And Path = '\\Path\\To\\Folder\\'")
-
- For Each file In oSelQ
- Res=file.Copy(fso.BuildPath("T:", file.FileName & "." & file.Extension))
- Next
-
- Res = sh.Run("subst T: /D", , True)
-
- Set oSelQ = Nothing
- Set oWmi = Nothing
- Set sh = Nothing
- Set fso = Nothing
-
- End Sub
Ответить
|
Страница: 1 | 2 |
Поиск по форуму