2009-08-26 9 views
2

Я пытаюсь скопировать содержимое определенных папок в другую папку с помощью VBScript.Скопировать содержимое папки с помощью VBScript

Цель состоит в том, чтобы перечислить группы пользователей пользователя, а затем скопировать содержимое конкретной папки на основе этих групп.

У меня есть код, который в настоящее время не работает.

Dim Group,User,objFSO,objFolder,source,target,StrDomain 

StrDomain = "domain.local" 
FolderBase = "\\domain.local\netlogon\workgrps\icons" 
Set net = CreateObject("wscript.network") 
Struser = net.username 
target = "\\fs1\users\"&net.username&"\Desktop\AppIcons\" 

DispUserInWhichGroup() 

Function DispUserInWhichGroup() 

On Error Resume Next 

Set objFSO=CreateObject("Scripting.FileSystemObject") 
Set User = GetObject("WinNT://" & strDomain & "/" & strUser & ",user") 

For Each Group In User.Groups 

source = FolderBase & Group.name 

Set objFolder = GetFolder(source) 

For Each file in objFolder.Files 
objFSO.CopyFile source &"\"& file.name, target&"\"&file.name 
Next 

Next 

End Function 

Это было слепленный из различных источников, и я уверен, что большинство из них прав, я просто не могу получить его работу полностью.

Любая помощь была бы замечательной.

Cheers.

+0

«Не работает должным образом», какое поведение вы видите? –

+0

Ничего. У меня нет ошибок. Я могу получить некоторую информацию с помощью wscript.echo, чтобы проверить пути к папкам, но я не могу получить копию файла. В папках есть файлы, но ничего не происходит. – LukeR

ответ

0

Удалить линию

On Error Resume Next 

от вашего а затем вы увидите ошибки, которые происходят.

EDIT: Я думаю, вам нужно указать объект для GetFolder.

Set objFolder = objFSO.GetFolder(source) 
+0

Отлично. Спасибо. Теперь я получаю ошибку несоответствия типа для GetFolder. По крайней мере, я могу понять, что происходит сейчас. – LukeR

+0

Спасибо, теперь я работаю. – LukeR

0

Попробуйте удалить второй \ в операторе копии

For Each file in objFolder.Files 
    objFSO.CopyFile source & "\" & file.name, target & file.name 
Next 

Кроме того, вы можете использовать объекты файл скопировать метод, как этот

For Each file in objFolder.Files 
    file.Copy target & file.name 
Next 
+0

Спасибо, но я не могу заставить его работать. Я попробовал оба. Я даже не могу заставить его повторить имя файла в цикле, используя wscript.echo (file.name), что заставляет меня думать, что у меня больше проблем. Мне жаль, что у меня не было ошибок, по крайней мере, у меня было бы кое-что, чтобы продолжить. Есть определенные файлы в папках, я действительно не уверен, что происходит не так. – LukeR

0

Папка назначения не существует, но оно должно быть указано:

C: \ Z в C: \ A \ Z будет работать, но C: \ Z в C: \ A не будет работать.

Папка, новая папка будет должна существовать:

C: \ A должен существовать, но C: \ A \ Z не должен.

В замыкающих косых должны быть опущены:

C: \ Z в C: \ А \ Z будет работать, но C: \ Z \ в C: \ А \ Z \ не будет работать.

Смежные вопросы