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

sponylum 10-02-2011 13:41 1609275

Помогите написать скриптик, решющий задачи поиска и удаления по таким критериям
 
Здравствуйте, помогите пожалуйста написать скрип для windows xp, выполняющий следующие действия:
Скрипту указывается начальная директория, в которой он:
1.Удаляет все файлы с расширением .html или .xml, которые меньше 5kb и больше 1mb.
2.После действия 1 удаляет все поддиректории в начальной директории, в которых не осталось файлов с расширением .html или .xml. Удаляет со всем остальным содержимым.
Заранее спасибо

Ivan Bardeen 12-02-2011 00:51 1610788

Вот VBS скрипт, который решает вашу задачу в папке "c:\test", в моем примере
Код:

strComputer = "."
i=0

Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = FSO.GetFolder("C:\test")
Set colSubfolders = objFolder.Subfolders
        For Each objSubfolder in colSubfolders
              For Each file In objSubfolder.files
              If Right(File.Name,4)="html" Or Right(File.Name,4)=".xml" Then
                                i = i + 1
                        If file.size < 5120 Or file.size > 1048576  Then                           
                                        file.delete
                                        i = i - 1
                                End If
                  End If
                Next
            ShowSubFolders(objSubfolder)
            If i = 0 Then
            objsubfolder.delete
            End If
            i = 0
        Next

Sub ShowSubFolders(Folder)
    For Each Subfolder In Folder.SubFolders
            For Each file In Subfolder.files
              If Right(File.Name,4)="html" Or Right(File.Name,4)=".xml" Then
                                  i = i + 1
                        If file.size < 5120 Or file.size > 1048576  Then                           
                                        file.delete
                                        i = i - 1
                                End If
                  End If
                Next
    ShowSubFolders Subfolder
    Next
End Sub


amel27 12-02-2011 12:02 1610932

Код:

@echo off
set $DIR=C:\TEST

for /f "delims=" %%a in ('dir/b/s/a-d "%$DIR%\*.xml" "%$DIR%\*.html"') do (
  if %%~za lss 5120 del /f "%%a"
  if %%~za gtr 1048576 del /f "%%a"
)
dir /b/s/ad "%$DIR%\*"|sort /r >"%TEMP%\%~n0.tmp"
for /f "usebackq delims=" %%a in ("%TEMP%\%~n0.tmp") do (
  (dir /b/ad "%%a\*" 2>nul
  dir /b/a-d "%%a\*.xml" "%%a\*.html" 2>nul
  )|find /c /v "" >nul||rd /s/q "%%a"
)



Время: 08:53.

Время: 08:53.
© OSzone.net 2001-