PDA

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


Страниц : 1 [2]

santey007
20-01-2015, 15:44
наконец дошли руки, т.к. вопрос встал остро
sov44 ваш скрипт не работает(
Iska ваш скрипт с пропуском определенных ярлыков работает на половину. он удаляет файлы все с раб стола, но не трогает ярлыки вообще никакие.
помогите сделать корректный скрипт пожалуйста

Iska
20-01-2015, 17:42
Iska ваш скрипт с пропуском определенных ярлыков работает на половину. он удаляет файлы все с раб стола, но не трогает ярлыки вообще никакие. »
А эти «никакие ярлыки» точно лежат физически на Рабочем столе пользователя, а? А не на Общем для всех пользователей Рабочем столе?

santey007
21-01-2015, 08:33
да уверен.
1-если создаю просто файлы на раб.столе, то чистит без проблем
2-если я создаю файл на рабочем столе и делаю тут же ярлык к нему, то при запуске скрипта файл убивает и выдает сообщение (просто путь к ярлыку) и все, ярлык не удаляет. при повторном запуске скрипта уже никаких сообщении не выдает и опять же ярлыки не трогает
3-если я создаю файл на другом диске и делаю ярлык на раб стол для него, то при запуске скрипта выдает опять сообщение (просто путь к ярлыку) и все. при повторном запуске уже ничего не выдает и опять же не удаляет

Iska
21-01-2015, 10:36
выдает сообщение (просто путь к ярлыку) и все, »
Вы раскомментировали само удаление — как я писал в последнем абзаце вот в этом посте (http://forum.oszone.net/post-2445662.html#post2445662) данной темы? Покажите Ваш код.

santey007
21-01-2015, 11:07
сори увидел косяк, одну строку не закомментировал, а другую не раскомментировал (внизу эти 2 строки были, незаметил)

а как теперь права развесить на раб стол пользователя? что бы не сохраняли на него ничего?

Iska
21-01-2015, 11:50
правильно сделал? »
Почти. Кое-что пропустили при этом ;).
Option Explicit

Dim objFSO
Dim objWshShell
Dim objDictionary

Dim objFolder
Dim objFile


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

With objDictionary
.Add "C:\Program Files\Google\Chrome\Application\chrome.exe", ""
.Add "C:\Program Files\Mozilla Firefox\firefox.exe", ""
End With

With objFSO.GetFolder(objWshShell.SpecialFolders.Item("Desktop"))
For Each objFolder In .SubFolders
objFolder.Delete True
Next

For Each objFile In .Files
Select Case LCase(objFSO.GetExtensionName(objFile.Name))
Case "lnk"
If Not objDictionary.Exists(objWshShell.CreateShortcut(objFile.Path).TargetPath) Then
WScript.Echo objFile.Path
'objFile.Delete True
End If
Case Else
objFile.Delete True
End Select
Next
End With

objDictionary.RemoveAll

Set objDictionary = Nothing
Set objWshShell = Nothing
Set objFSO = Nothing

WScript.Quit 0

И — то же самое:
Для удаления раскомментируйте помеченные красным строки. Чтобы не выводились сообщения, закомментируйте или удалите помеченные зелёным строки.

santey007
21-01-2015, 12:08
увидел косяк, исправил все ок.
еще моменты, как бы оставить файлик рдп подключения или любой другой файл или папку которую необходимо оставить? и развесить права на раб стол, что бы больше не сохраняли туда ничего?

Iska
21-01-2015, 14:41
как бы оставить файлик рдп подключения »
Можно.

или любой другой файл »
Можно.

или папку которую необходимо оставить? »
Тоже можно.

Пробуйте (не проверялось):
Option Explicit

Dim objFSO
Dim objWshShell

Dim objDictionaryExcludeFolders
Dim objDictionaryExcludeFiles
Dim objDictionaryExcludeShortcuts

Dim objFolder
Dim objFile


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

Set objDictionaryExcludeFolders = WScript.CreateObject("Scripting.Dictionary")
Set objDictionaryExcludeFiles = WScript.CreateObject("Scripting.Dictionary")
Set objDictionaryExcludeShortcuts = WScript.CreateObject("Scripting.Dictionary")

With objDictionaryExcludeFolders
.Add "Новая папка", ""
.Add "Новая папка (2), ""
.Add "Новая папка (3), ""
.Add "От создателей Новая папка, Новая папка (2) и Новая папка (3) — Новая папка (4)", ""
End With

With objDictionaryExcludeFiles
.Add "MyFile.txt", ""
.Add "MyFile2.txt", ""
End With

With objDictionaryExcludeShortcuts
.Add "C:\Program Files\Google\Chrome\Application\chrome.exe", ""
.Add "C:\Program Files\Mozilla Firefox\firefox.exe", ""
End With


With objFSO.GetFolder(objWshShell.SpecialFolders.Item("Desktop"))
For Each objFolder In .SubFolders
If Not objDictionaryExcludeFolders.Exists(objFolder.Name) Then
WScript.Echo objFolder.Path
'objFolder.Delete True
End If
Next

For Each objFile In .Files
If Not objDictionaryExcludeFiles.Exists(objFile.Name) Then
Select Case LCase(objFSO.GetExtensionName(objFile.Name))
Case "lnk"
If Not objDictionaryExcludeShortcuts.Exists(objWshShell.CreateShortcut(objFile.Path).TargetPath) Then
WScript.Echo objFile.Path
'objFile.Delete True
End If
Case Else
WScript.Echo objFile.Path
'objFile.Delete True
End Select
End If
Next
End With

objDictionaryExcludeFolders.RemoveAll
objDictionaryExcludeFiles.RemoveAll
objDictionaryExcludeShortcuts.RemoveAll

Set objDictionaryExcludeFolders = Nothing
Set objDictionaryExcludeFiles = Nothing
Set objDictionaryExcludeShortcuts = Nothing

Set objWshShell = Nothing
Set objFSO = Nothing

WScript.Quit 0
Убрал, кстати, «"url"» — там была бы ошибка, для них нужна иная логика.

и развесить права на раб стол, что бы больше не сохраняли туда ничего? »
Развешивайте. Я своё мнение на этот счёт, помнится, высказывал выше. Отрицательное.

santey007
03-02-2015, 12:02
все супер скрипт отрабатывает. вопрос: как его запустить определенным пользователям? а не всем

santey007
04-02-2015, 10:53
есть мысли?




© OSzone.net 2001-2012