удалить все файлы с раб.стола, кроме определенных ярлыков. через КД
подскажите, как написать скрипт, что бы удалялось все, с рабочего стола пользователя, кроме определенных ярлыков.
скрипт предполагаю запускать через КД (Logon)
|
skype,Google Chrome
хотя я думаю можно оставить вообще все ярлыки пока для начала. удалить только файлы и папки.
|
Цитата:
Цитата santey007
удалить только файлы и папки. »
|
Удалять ярлыки всё-же безопаснее, т.к. некоторые "блондинки" хранят рабочие файлы в папках, созданных на рабочем столе. После удаления папок с документами могут быт проблемы. :)
|
нужные ярлыки положить в All Users, тогда удалить их в контексте пользователя будет невозможно.
|
sov44 тебя понимаю, но начальство дало указание, убить все безвозвратно(я конечно же бэкапчик то профилей крайний сделаю на КД на всякий). так что можно не бояться...
cameron про ярлыки понял, спасибо за совет, наверно воспользуюсь им перед удалением. я так понимаю так же скрипт нужен, что бы сначала все нужные ярлыки или даже файлики (подключение к RDP, презентация одна) перенести в элюзерс, а потом сносить?
|
santey007, вот с ярлыками, просто копирование, Если нужно удаление, думаю сами поправите скрипт
Код:
@echo off
SetLocal enabledelayedexpansion
set "my_lnk=7z_sfx_RU.lnk"
if not exist c:\BackUp_lnk md c:\BackUp_lnk
for /f "delims=" %%a in ('dir/b/ad-h "%userprofile%\..\*"^|findstr/ixvc:"All Users"') do (
for %%b in ("%userprofile%\..\%%a\Desktop\*.lnk") do (
if /i not "%%~nxb"=="%my_lnk%" copy /y "%%b" "c:\BackUp_lnk\"
))
pause
exit
|
в скриптах пока мало что понимаю, но думаю наверно так должно быть?
Скрытый текст
@echo off
SetLocal enabledelayedexpansion
set "my_lnk=7z_sfx_RU.lnk"
if not exist c:\BackUp_lnk md c:\BackUp_lnk
for /f "delims=" %%a in ('dir/b/ad-h "%userprofile%\..\*"^|findstr/ixvc:"All Users"') do (
for %%b in ("%userprofile%\..\%%a\Desktop\*.lnk") do (
if /i not "%%~nxb"=="%my_lnk%" delete /y "%%b" "c:\BackUp_lnk\"
))
pause
exit
я так понял он копирует их на С в BackUp_lnk?
|
Не проверял. Подстрахуйтесь перед использованием скрипта
удаление всех ярлыков c рабочего стола
Код:
@echo off
SetLocal enabledelayedexpansion
for /f "delims=" %%a in ('dir/b/ad-h "%userprofile%\..\*"^|findstr/ixvc:"All Users"') do (
for %%b in ("%userprofile%\..\%%a\Desktop\*.lnk") do (
del /f /q "%%b"
))
pause
exit
удаление всех файлов и ярлыков с рабочего стола
Код:
@echo off
SetLocal enabledelayedexpansion
for /f "delims=" %%a in ('dir/b/ad-h "%userprofile%\..\*"^|findstr/ixvc:"All Users"') do (
for %%b in ("%userprofile%\..\%%a\Desktop\*") do (
del /f /q "%%b"
))
pause
exit
|
Цитата:
Цитата cameron
нужные ярлыки положить в All Users, тогда удалить их в контексте пользователя будет невозможно. »
|
Тогда их и найти будет невозможно ;). На Рабочем столе пользователя-то.
Цитата:
Цитата santey007
удалить только файлы и папки. »
|
На WSH:
Скрытый текст
Код:
Option Explicit
Dim objFSO
Dim objFolder
Dim objFile
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
With objFSO.GetFolder(WScript.CreateObject("WScript.Shell").SpecialFolders.Item("Desktop"))
For Each objFolder In .SubFolders
WScript.Echo objFolder.Path
'objFolder.Delete True
Next
For Each objFile In .Files
Select Case LCase(objFSO.GetExtensionName(objFile.Name))
Case "lnk", "url"
' Nothing to do
Case Else
WScript.Echo objFile.Path
'objFile.Delete True
End Select
Next
End With
Set objFSO = Nothing
WScript.Quit 0
Для удаления раскомментируйте помеченные красным строки. Чтобы не выводились сообщения, закомментируйте или удалите помеченные зелёным строки.
|
Цитата:
Цитата Iska
Тогда их и найти будет невозможно . На Рабочем столе пользователя-то. »
|
это почему?
|
santey007, немного модернизировал скрипт, пробуйте. Для "боевого" запуска убрать echo
Код:
@echo off
SetLocal enabledelayedexpansion
for /f "delims=" %%a in ('dir/b/ad-h "%userprofile%\..\*"^|findstr/ixvc:"All Users"') do (
for %%b in ("%userprofile%\..\%%a\Desktop\*") do echo del /f /q "%%b"
for /d %%c in ("%userprofile%\..\%%a\Desktop\*") do echo rd /s /q "%%c"
)
pause
exit
Соглашусь с Iska. Скопировал ярлык с рабочего стола пользователя в c:\Users\Default\Desktop, ярлыка из-под пользователя не увидел. Скопировал в c:\Users\Public\Desktop, ярлык виден и прекрасно удаляется из-под пользователя.
All Users он как-бы есть, но перебрасывает в Public
|
cameron, Georgio, ну, задача-то какая была:
Цитата:
Цитата santey007
с рабочего стола пользователя »
|
а ежели ярлыки переместим с Рабочего стола пользователя на общий Рабочий стол, то стало быть на Рабочем столе пользователя мы их и не найдём ;).
Для пропуска определённых ярлыков:
Скрытый текст
Код:
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
WScript.Echo objFolder.Path
'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
WScript.Echo objFile.Path
'objFile.Delete True
End Select
Next
End With
objDictionary.RemoveAll
Set objDictionary = Nothing
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
Цитата:
Цитата sov44
Скопировал ярлык с рабочего стола пользователя в c:\Users\Default\Desktop, ярлыка из-под пользователя не увидел. »
|
На Рабочем столе пользователя Вы должны его увидеть. Причём даже два ярлыка, поскольку скопировали, а не переместили.
Я имел в виду, что мы не найдём в папке, которая отображается на Рабочий стол пользователя.
|
а как заодно права развесить на рабочий стол только на чтение?что бы не смогли больше ничего туда сохранять?
|
Цитата:
Цитата santey007
а как заодно права развесить на рабочий стол только на чтение?что бы не смогли больше ничего туда сохранять? »
|
Не делайте этого.
|
Если будете очищать — какой смысл? А через неделю-другую пользователи и сами привыкнут к тому, что сохранять на Рабочий стол бесполезно.
|
да просто мозг будут выносить: опять сохранил файл на раб. стол, опять забыл его перенести, а это отчет, верни срочно! -вот этого хочу избежать
|
Цитата:
Цитата santey007
да просто мозг будут выносить: опять сохранил файл на раб. стол, опять забыл его перенести, а это отчет, верни срочно! -вот этого хочу избежать »
|
А вот это решается административными методами, т.е. бумажками с соответствующими подписями. ;)
|
не работают бумажки вообще никак, проверено уже давно и ни раз...
|
наконец дошли руки, т.к. вопрос встал остро
sov44 ваш скрипт не работает(
Iska ваш скрипт с пропуском определенных ярлыков работает на половину. он удаляет файлы все с раб стола, но не трогает ярлыки вообще никакие.
помогите сделать корректный скрипт пожалуйста
|
Цитата:
Цитата santey007
Iska ваш скрипт с пропуском определенных ярлыков работает на половину. он удаляет файлы все с раб стола, но не трогает ярлыки вообще никакие. »
|
А эти «никакие ярлыки» точно лежат физически на Рабочем столе пользователя, а? А не на Общем для всех пользователей Рабочем столе?
|
да уверен.
1-если создаю просто файлы на раб.столе, то чистит без проблем
2-если я создаю файл на рабочем столе и делаю тут же ярлык к нему, то при запуске скрипта файл убивает и выдает сообщение (просто путь к ярлыку) и все, ярлык не удаляет. при повторном запуске скрипта уже никаких сообщении не выдает и опять же ярлыки не трогает
3-если я создаю файл на другом диске и делаю ярлык на раб стол для него, то при запуске скрипта выдает опять сообщение (просто путь к ярлыку) и все. при повторном запуске уже ничего не выдает и опять же не удаляет
|
Цитата:
Цитата santey007
выдает сообщение (просто путь к ярлыку) и все, »
|
Вы раскомментировали само удаление — как я писал в последнем абзаце вот в этом посте данной темы? Покажите Ваш код.
|
сори увидел косяк, одну строку не закомментировал, а другую не раскомментировал (внизу эти 2 строки были, незаметил)
а как теперь права развесить на раб стол пользователя? что бы не сохраняли на него ничего?
|
Почти. Кое-что пропустили при этом ;).
Скрытый текст
Код:
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
как бы оставить файлик рдп подключения »
|
Можно.
Можно.
Цитата:
Цитата santey007
или папку которую необходимо оставить? »
|
Тоже можно.
Пробуйте (не проверялось):
Скрытый текст
Код:
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
и развесить права на раб стол, что бы больше не сохраняли туда ничего? »
|
Развешивайте. Я своё мнение на этот счёт, помнится, высказывал выше. Отрицательное.
|
все супер скрипт отрабатывает. вопрос: как его запустить определенным пользователям? а не всем
|
Время: 01:40.
© OSzone.net 2001-