Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   автоматиеская очистка рабочего стола (http://forum.oszone.net/showthread.php?t=180617)

sanek-l 15-07-2010 10:12 1453638

автоматиеская очистка рабочего стола
 
посоветуйте как с помощью сценария входа в систему очищать рабочий стол – чтобы оставался фиксированный набор ярлыков, а все файлы и папки перемещались в папку пользователя. ограничение – под конкретного пользователя, а не всех сразу.
в идеале текст сценария и куда его подставить.

deepred 21-07-2010 12:43 1457493

sanek-l,

Код:

Option Explicit

Dim objFSO, objWshShell, objShell
Dim objFile, objSubFolder, objFolder
Dim objFolderItem, objShellFolder
Dim objWshShortcut, strDesktop, strDstPath
Dim strUserTask, strUserName, strTask

  Set objFSO      =  WScript.CreateObject("Scripting.FileSystemObject")
  Set objShell    =  WScript.CreateObject("Shell.Application")
  Set objWshShell =  WScript.CreateObject("WScript.Shell")

  strDesktop      =  objWshShell.SpecialFolders("Desktop")  ' Определяем "Рабочий стол" пользователя
  strDstPath      =  objWshShell.SpecialFolders("MyDocuments")
  strUserName    =  objwshshell.ExpandEnvironmentStrings("%USERNAME%")
  strDstPath      =  strDstPath &"\"&"DeskResource"  ' Определяем целевую папку (в "Моих документах")
  strUserTask    =  "HP Pavilion"  ' Определяем "конкретного пользователя"
 
  If Not strUserTask = strUserName Then

    MsgBox "Процедура не предусмотрена для текущего пользователя"  ' Если пользователь не тот, то... (необязательно)
    WScript.Quit 0
 
  Else
   
      strTask = False
      Call ClearDesktop("str")
      IF strTask Then
          Call Shortcut("str")
      End if

      Set objShell    = Nothing
      Set objWshShell = Nothing
      Set objFSO      = Nothing
   
  End If

Wscript.Echo "Сценарий успешно выполнен!"  ' Необязательно
WScript.Quit 0

' ************************************************************************
  Function ClearDesktop(str)  ' Проверяем все элементы рабочего стола
 
    set objFolder = objFSO.GetFolder(strDesktop)

    For Each objFile In objFolder.Files
                                                        ' Если не ярлык
                                                        ' и не ярлык интернета (можно убрать)
                                                        ' и не файл desktop.ini

        IF UCase(objFSO.GetExtensionName(objFile)) <> UCase("lnk") And _ 
            UCase(objFSO.GetExtensionName(objFile)) <> UCase("url") And _ 
            objFSO.GetBaseName(objFile.Name) <> "desktop" Then 
              strTask = True

              If Not objFSO.FolderExists(strDstPath) Then  ' Если целевой папки нет
                  objFSO.CreateFolder strDstPath  ' создаем её
              End If

              objFile.Move strDstPath &"\"  ' перемещаем файлы

        End if
    Next
' -------------------------------------------------------------------------
    For Each objSubFolder In objFolder.SubFolders

    Set objShellFolder = objShell.NameSpace(objSubFolder.Path)

        IF Not Len(objShellFolder.Self) < Len(objSubFolder.Name) Then ' Если папка не ярлык
              strTask = True

              If Not objFSO.FolderExists(strDstPath) Then
                  objFSO.CreateFolder strDstPath
              End If

              If objSubFolder.Files.Count = 0 Then  ' Если папка пустая
                  objSubFolder.Delete  ' Удаляем
              Else
                  objSubFolder.Move strDstPath &"\"  ' Если нет - перемещаем
              End If

        End if
    Next
  End function

' *************************************************************************
 Function Shortcut(str)  ' Создаем ярлык для папки с перемещенными файлами (если его нет) 

    If not objFSO.FileExists(strDesktop & "\DeskResource.lnk") Then

        Set objWshShortcut = objWshShell.CreateShortcut(strDesktop & "\DeskResource.lnk")

        objWshShortcut.WorkingDirectory = strDstPath
        objWshShortcut.TargetPath      = strDstPath
        objWshShortcut.Description = "Сохраненные файлы рабочего стола"
        objWshShortcut.IconLocation = "shell32.dll, 260"
        objWshShortcut.Save

    End If

 End function

Испытано на WinVista! Прошу отписаться по факту проверки...


Время: 18:21.

Время: 18:21.
© OSzone.net 2001-