|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Очистка рабочего стола/моих документов |
|
|
VBS/WSH/JS - Очистка рабочего стола/моих документов
|
Новый участник Сообщения: 8 |
Профиль | Отправить PM | Цитировать
Добрый день,
необходим скрипт, который будет отрабатывать при выходе пользователя из системы... нужно чтобы скрипт вначале скопировал все файлы с Рабочего стола и из Моих документов в сетевую папку \\server\Profiles$ создавая для каждого %userprofile% отдельный каталог и копировал в него соотв документы и рабочий стол, сохраняя структуру каталогов, а затем бы удалил с рабочего стола и моих документов все файлы/папки кроме *.lnk и *.rdp (но эти файлы должны остаться только в корне рабочего стола и моих документов - если были такие файлы во вложенных папках - то их удалять вместе с папками) главный смысл - все данные слить в сетевую папку, а рабочий стол/мои документы оставить только с *.lnk и *.rdp файлами, без каких-либо папок и пр. файлов |
|
Отправлено: 22:45, 22-03-2015 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать нашел вот такой скрипт 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 |
Последний раз редактировалось jbk, 23-03-2015 в 10:30. Отправлено: 10:25, 23-03-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата jbk:
|
|
Отправлено: 10:32, 23-03-2015 | #3 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать ага ошибку нашел, вот только слабо я понимаю в программировании....
objFSO.CopyFolder objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name, DDir+WshNet.UserName+"\" вот в этой строке ошибка - не найден путь..... какой именно путь не пойму.. исходный? рабочий стол пользователя? |
Отправлено: 10:48, 23-03-2015 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 11:05, 23-03-2015 | #5 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Iska, помогло....
теперь понял, что мне еще нужно поменять в этом скрипте... может поможете? у меня скрипт пишет в папку \\server\Profiles$\имя_профиля при этом папка имя_профиля должна быть создана до исполнения скрипта вручную, как бы дописать, чтобы сам скрипт создавал папку с именем профиля (%userprofile%) в папке \\server\Profiles$ в случае ее отсутствия и копировал бы файлы с рабочего стола в папку: \\server\Profiles$\имя_профиля\Desktop |
Последний раз редактировалось jbk, 23-03-2015 в 11:33. Отправлено: 11:14, 23-03-2015 | #6 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Допилил скрипт сам, правда убрал папку Desktop:
Скрытый текст
'============================================ 'Перенос содержимого десктопа пользователя '============================================ 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") Set objNet = WScript.CreateObject("WScript.Network") Set FSO = CreateObject("scripting.filesystemobject") sUserName = WshNet.UserName folderToCheckFor = "\\filesrv\profiles$\"+sUserName If (FSO.FolderExists(folderToCheckFor)) = False Then FSO.CreateFolder(folderToCheckFor) End If 'Используя рекурсию сбрасываем атрибуты всех файлов во всех каталогах и подкаталогах десктопа. 'Необходимо для последующего их удаления. 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 'WScript.Echo objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name 'WScript.Echo DDir+WshNet.UserName+"\" objFSO.CopyFolder objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name, folderToCheckFor+"/" 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, folderToCheckFor+"/" objFSO.DeleteFile efile End If Next |
Последний раз редактировалось jbk, 24-03-2015 в 09:25. Отправлено: 12:12, 23-03-2015 | #7 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать есть конечно недочет... убиваются так же ярлыки интернета.... как бы их оставить?
|
Отправлено: 19:59, 23-03-2015 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 05:21, 24-03-2015 | #9 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать ok, научусь)
представленный код не помог - убивает все, включая ярлыки.... и lnk, и url |
Последний раз редактировалось jbk, 24-03-2015 в 09:27. Отправлено: 09:19, 24-03-2015 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Исчезло почти все с моих документов и рабочего стола. | ZioniC | Microsoft Windows 8 и 8.1 | 2 | 06-11-2013 03:39 | |
CMD/BAT - Очистка рабочего стола | sov44 | Скриптовые языки администрирования Windows | 3 | 10-11-2012 20:23 | |
CMD/BAT - [решено] Сортировка документов с рабочего стола по пакам | O L E G | Скриптовые языки администрирования Windows | 4 | 07-09-2012 10:01 | |
Ошибка - Самопроизвольно удалились файлы с рабочего стола и из моих документов | old_nick | Microsoft Windows 2000/XP | 7 | 07-01-2011 09:58 | |
Любой язык - автоматиеская очистка рабочего стола | sanek-l | Скриптовые языки администрирования Windows | 1 | 21-07-2010 12:43 |
|