Компьютерный форум 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=246862)

t3rr0r 13-11-2012 15:15 2024816

Помогите плиз со скриптом на удаление файлов.
 
Условия такие:
1) В папке c:\windows\system32
2) удалить все файлы с расширениями: "exe","com","bat","txt","sys","vbs","dll","ini","doc","wsc","dat","msi","msc","mod","chm","cab","hlp "
3) с размером в 2445 байта.

Буду очень признателен и благодарен за скорейшую помощь.

Foreigner 13-11-2012 19:07 2024992

Код:

@echo off
pushd c:\windows\system32
for %%i in ( *.exe *.com *.bat *.txt *.sys *.vbs *.dll *.ini *.doc *.wsc *.dat *.msi *.msc *.mod *.chm *.cab *.hlp) do (

    if %%~zi equ 2445 echo del %%i

)
popd

Сначала проверь, потом уберешь echo

megaloman 13-11-2012 19:24 2025005

Тема VBS, поэтому представляю скрипт на VBS. Очевидно, что с точки зрения быстроты написания и надёжности в данном случае батник многократно выигрывает.
Код:

' Скрипт удаляет в указанной папке файлы,
' определенного размера
' определённых расширений

DelFolder = "C:\WINDOWS\system32"
DelSize = 2445
DelExt = Array("exe", "com", "bat", "txt", "sys", "vbs", "dll", "ini", "doc", "wsc", "dat", "msi", "msc", "mod", "chm", "cab", "hlp")

N = UBound(DelExt)
Set FSO = CreateObject("Scripting.FileSystemObject")

On Error Resume Next
Set Folder = FSO.GetFolder(DelFolder)

Set Re = New RegExp
Re.IgnoreCase = True


If Err.Number = 0 Then

    Set Files = Folder.Files
    For Each f In Files
        If f.Size = DelSize Then
            For i = 0 To N
                Re.Pattern = "^.*\." + DelExt(i) + "$"      ' Маска файла
                If Re.Test(f.Name) Then
                    On Error Resume Next
                    FSO.DeleteFile DelFolder + "\" + f.Name, True
                    If Err.Number <> 0 Then MsgBox CStr(Err.Number) + "  " + Err.Description
                    Exit For
                End If
            Next
        End If
    Next

Else
    MsgBox CStr(Err.Number) + "  " + Err.Description
End If

В задаче не указано, что файлы надо удалять и в поддиректориях. В батнике это элементарно. В VBS-скрипте сложнее.
И, если это практическая задача, а не для преподавателя, то, очевидно ИМХО все эти файлы - проявление вирусной активности, надо с этим разбираться.

t3rr0r 14-11-2012 11:56 2025413

Всем большое Спасибо за оба варианта! Именно это мне и требовалось.
Кстати верно подмечено, это следы вирусной активности, в данной папке их просто миллиарды и NTFS начинает сходить с ума и соответственно OS глючит безбожно. Сначала грешил на жёсткий диск, но когда обнаружил весь этот файловый мусор, стало сразу ясно в чём причина.

t3rr0r 28-11-2012 12:03 2034548

К моему сожалению, эти "мусорные" файлы появляются снова...никак не могу найти источник вируса, т.к. сканирование всяческими антивирусными утилитами заканчиваются крахом...И в интернете никак не могу найти описание вируса по симптомам. Может кто-то сталкивался с подобным, подскажите пожалуйста.

Petya V4sechkin 28-11-2012 16:26 2034721

Цитата:

Цитата t3rr0r
сканирование всяческими антивирусными утилитами заканчиваются крахом


Цитата:

Цитата t3rr0r
не могу найти источник вируса

Создайте тему в разделе форума Лечение систем от вредоносных программ, выполнив эти инструкции.
Там и продолжайте.


Время: 01:04.

Время: 01:04.
© OSzone.net 2001-