![]() |
Очистка рабочего стола/моих документов
Добрый день,
необходим скрипт, который будет отрабатывать при выходе пользователя из системы... нужно чтобы скрипт вначале скопировал все файлы с Рабочего стола и из Моих документов в сетевую папку \\server\Profiles$ создавая для каждого %userprofile% отдельный каталог и копировал в него соотв документы и рабочий стол, сохраняя структуру каталогов, а затем бы удалил с рабочего стола и моих документов все файлы/папки кроме *.lnk и *.rdp (но эти файлы должны остаться только в корне рабочего стола и моих документов - если были такие файлы во вложенных папках - то их удалять вместе с папками) главный смысл - все данные слить в сетевую папку, а рабочий стол/мои документы оставить только с *.lnk и *.rdp файлами, без каких-либо папок и пр. файлов |
нашел вот такой скрипт vbs... но не получается копировать по сетевому пути \\server\profiles$? скрипт только удаляет файлы....
Скрытый текст
'============================================
'Перенос содержимого десктопа пользователя 'Мосийчук Сергей (klasik_cc@mailru), 17.08.2006 'Запускается обьектом груповой политики при выходе пользователя '============================================ On Error Resume Next Set SHELL = CreateObject ("WScript.Shell") Set SF = SHELL.SpecialFolders Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(SF("Desktop")) Set colSubfolders = objFolder.Subfolders Set WshNet = CreateObject ("WScript.Network") DDir = "\\server\Profiles$" 'Используя рекурсию сбрасываем атрибуты всех файлов во всех каталогах и подкаталогах десктопа. 'Необходимо для последующего их удаления. Set objParentFolder = objFSO.GetFolder(SF("Desktop")) ShowSubfolders objParentFolder Sub ShowSubFolders(Folder) For Each Subfolder in Folder.SubFolders Set objSubFolder = objFSO.GetFolder(Subfolder.Path) ShowSubFolders Subfolder For Each efile in objSubFolder.Files Set gFILE = objFSO.GetFile (efile) gFILE.Attributes = 0 Next Next End Sub 'копируем с последующим удалением все каталоги десктопа (соответственно с их содержимым). 'Использование здесь CopyFolder вместо MoveFolder связано с возможностью метода CopyFolder перезаписывать файл, 'если такой существует в целевой папке. For Each objSubfolder in colSubfolders objFSO.CopyFolder objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name, DDir+WshNet.UserName+"\" objFSO.DeleteFolder objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name Next 'теперь перебираем все файлы которые находятся на рабочем столе, и если их тип не ярлык, 'то сбрасываем атрибут на 0, копируем и убиваем. For Each efile in objFolder.Files Set gFILE = objFSO.GetFile (efile) fEXT = objFSO.GetExtensionName (efile.Path) If LCase (fEXT)<>"lnk" then gFILE.Attributes = 0 objFSO.CopyFile efile, DDir+WshNet.UserName+"\" objFSO.DeleteFile efile End If Next |
Цитата:
|
ага ошибку нашел, вот только слабо я понимаю в программировании....
objFSO.CopyFolder objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name, DDir+WshNet.UserName+"\" вот в этой строке ошибка - не найден путь..... какой именно путь не пойму.. исходный? рабочий стол пользователя? |
Вставьте перед этой строкой следующее:
Код:
WScript.Echo objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name |
Iska, помогло....
теперь понял, что мне еще нужно поменять в этом скрипте... может поможете? у меня скрипт пишет в папку \\server\Profiles$\имя_профиля при этом папка имя_профиля должна быть создана до исполнения скрипта вручную, как бы дописать, чтобы сам скрипт создавал папку с именем профиля (%userprofile%) в папке \\server\Profiles$ в случае ее отсутствия и копировал бы файлы с рабочего стола в папку: \\server\Profiles$\имя_профиля\Desktop |
Допилил скрипт сам, правда убрал папку Desktop:
Скрытый текст
Код:
'============================================ |
есть конечно недочет... убиваются так же ярлыки интернета.... как бы их оставить?
|
Если научитесь помимо тэга [spoiler] пользоваться тэгом [code] — подскажу ;).
Замените: Скрытый текст
Код:
For Each efile in objFolder.Files на: Скрытый текст
Код:
For Each objFile In objFolder.Files Не проверялось. |
ok, научусь)
представленный код не помог - убивает все, включая ярлыки.... и lnk, и url |
jbk, пока в Вашем коде будет тупо присутствовать первой строкой «On Error Resume Next» — и не такое будет убивать. А что на самом деле обязано присутствовать в первой строке — так это «Option Explicit».
|
Iska, да код не мой, я вообще ничего не понимаю в программировании).... изменил как мог для себя...
On Error Resume Next в рабочем скрипте, я закомментил.... если добавлю Option Explicit то тогда вообще не понимаю что и как делать..... |
jbk, пробуйте:
Скрытый текст
Код:
Option Explicit |
Добрый день Iska.
У меня вопрос по скрипту, который вы опубликовали. Я разместил данный скрипт в GPO при выходе пользователя из системы. Все успешно переносится в папку на сервер, но не удаляется информация из папки мои документы и возникает окно с ошибкой 800a0046. В чем может быть дело. Так же на рабочем столе не сохраняются lnk, rdp и url. У некоторых пользователей полностью, у некоторых частично. Еще почему то Windows 10 очень долго думает при выходе из системы и при перезагрузке с этим скриптом. Помогите решить вопрос. Заранее огромное спасибо. |
Цитата:
Цитата:
Цитата:
Цитата:
Код:
Case "lnk", "url", "rdp" Цитата:
|
Вложений: 1
Iska, спасибо за ответ и размещенный скрипт, то что требовалось он делает, но только жаль что есть ошибки(
1) Да все верно, именно этот скрипт. Огромное вам спасибо еще раз за размещение. 2) Я изменил путь к серверу соответственно. 3) После запуска скрипта выскакивает окно. Я во вложении разместил скрин. Попытался подшаманить и убрал строку [q=Iska]strSourceFolder = WScript.CreateObject("WScript.Shell").SpecialFolders("MyDocuments") strFullDestFolder = objFSO.BuildPath(strUserNameDestFolder, objFSO.GetFileName(strSourceFolder)) If Not objFSO.FolderExists(strFullDestFolder) Then objFSO.CreateFolder strFullDestFolder End If With objFSO.GetFolder(strSourceFolder) .Copy strFullDestFolder, True End With »[/q] После удаления этой строки скрипт срабатывает, но не копирует и не удаляет файлы из документов пользователя. Копирует рабочий стол нормально и очищает тоже без этой строчки, но только вместе с файлами у пользователей удаляются lnk и rdp файлы тоже. 4) "rdp" в строчку я пробовал добавить, но безрезультатно, все тоже самое. 5) Windows 10 думает очень долго, но перезагружается или выходит из системы. На рабочем столе все очищается. Пофиксить проблему я так понимаю не получится( P.S. Так же при работе скрипта без этой строчки, во время первого выхода все хорошо, но второй и последующие входы с новыми файлами на рабочем столе выскакивают ошибки непонятные, но все переносится и чистится. |
Добрый день Iska.
Вы мне поможете с выполнением сценария vbs? |
Цитата:
Цитата:
Цитата:
Цитата:
|
Время: 23:14. |
Время: 23:14.
© OSzone.net 2001-