Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Очистка рабочего стола/моих документов

Ответить
Настройки темы
VBS/WSH/JS - Очистка рабочего стола/моих документов
jbk jbk вне форума

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: jbk
Дата: 23-03-2015
Добрый день,

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

нужно чтобы скрипт вначале скопировал все файлы с Рабочего стола и из Моих документов в сетевую папку \\server\Profiles$ создавая для каждого %userprofile% отдельный каталог и копировал в него соотв документы и рабочий стол, сохраняя структуру каталогов,

а затем бы удалил с рабочего стола и моих документов все файлы/папки кроме *.lnk и *.rdp (но эти файлы должны остаться только в корне рабочего стола и моих документов - если были такие файлы во вложенных папках - то их удалять вместе с папками)

главный смысл - все данные слить в сетевую папку,

а рабочий стол/мои документы оставить только с *.lnk и *.rdp файлами, без каких-либо папок и пр. файлов

Отправлено: 22:45, 22-03-2015

 
jbk jbk вне форума Автор темы

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить 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
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата jbk:
нашел вот такой скрипт... но не получается копировать по сетевому пути \\server\profiles$ »
Для начала уберите «On Error Resume Next». Возможно, после этого увидите что именно «не получается».
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:32, 23-03-2015 | #3

jbk jbk вне форума Автор темы

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


ага ошибку нашел, вот только слабо я понимаю в программировании....

objFSO.CopyFolder objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name, DDir+WshNet.UserName+"\" вот в этой строке ошибка - не найден путь..... какой именно путь не пойму.. исходный? рабочий стол пользователя?

Отправлено: 10:48, 23-03-2015 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Вставьте перед этой строкой следующее:
Код: Выделить весь код
WScript.Echo objFSO.GetFolder(SF("Desktop"))+"\"+objSubfolder.Name
WScript.Echo DDir+WshNet.UserName+"\"
— увидите. Возможно, поможет.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:05, 23-03-2015 | #5

jbk jbk вне форума Автор темы

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, помогло....

теперь понял, что мне еще нужно поменять в этом скрипте... может поможете?

у меня скрипт пишет в папку \\server\Profiles$\имя_профиля
при этом папка имя_профиля должна быть создана до исполнения скрипта вручную,
как бы дописать, чтобы сам скрипт создавал папку с именем профиля (%userprofile%) в папке \\server\Profiles$ в случае ее отсутствия
и копировал бы файлы с рабочего стола в папку: \\server\Profiles$\имя_профиля\Desktop

Последний раз редактировалось jbk, 23-03-2015 в 11:33.


Отправлено: 11:14, 23-03-2015 | #6

jbk jbk вне форума Автор темы

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить 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

jbk jbk вне форума Автор темы

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


есть конечно недочет... убиваются так же ярлыки интернета.... как бы их оставить?

Отправлено: 19:59, 23-03-2015 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Если научитесь помимо тэга [spoiler] пользоваться тэгом [code] — подскажу .

Замените:
Скрытый текст
Код: Выделить весь код
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

на:
Скрытый текст
Код: Выделить весь код
For Each objFile In objFolder.Files
	Select Case LCase(objFile.Name)
		Case "lnk", "url"
			' Nothing to do
		Case Else
			objFile.Attributes = 0
			objFile.Copy folderToCheckFor & "\", True
			objFile.Delete True
	End Select
Next

Не проверялось.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:21, 24-03-2015 | #9

jbk jbk вне форума Автор темы

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


ok, научусь)

представленный код не помог - убивает все, включая ярлыки.... и lnk, и url

Последний раз редактировалось jbk, 24-03-2015 в 09:27.


Отправлено: 09:19, 24-03-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Очистка рабочего стола/моих документов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Исчезло почти все с моих документов и рабочего стола. 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




 
Переход