BigAp.ru — интернет-магазин электроники и бытовой техники

Автор Тема: Удаление файлов по маске.  (Прочитано 600 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bessmertnyi_poni

  • Специалист ИТ
  • ****
  • Сообщений: 453
  • Karma: +14/-0
  • Пол: Мужской
  • Под дождем суп можно есть бесконечно!
    • Share Post
Удаление файлов по маске.
« : Ноябрь 16, 2015, 02:56:41 pm »
Всем привет. Вопрос до удалению файлов по маске.
Есть рабочий скрипт

Option Explicit
Dim sFolder: sFolder = "d:\1"
Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject")
 
If oFSO.FolderExists(sFolder) Then
  DelFileOnMask sFolder, "vault" ' каталог и маски файлов для удаления
  WScript.Echo "Готово."
Else
  WScript.Echo "Не найден путь " & sFolder
End If
WScript.Quit(0)
 
Function DelFileOnMask(s, sMask)
  Dim oFld, arrMask, v, i
  Set oFld = oFSO.GetFolder(s)
  arrMask = Split(LCase(sMask), " ")
  For Each v In oFld.Files
    For i = LBound(arrMask) To UBound(arrMask)
      If LCase(oFSO.GetExtensionName(s & "\" & v.Name)) = arrMask(i) Then
        v.Delete
        Exit For
      End If
    Next
  Next
End Function

Но как сделать так что он удалял во всех папках, а не указывая каждый раз путь.
При указании C:\ - удаляет файлы только в корне. А не во вложениях.
« Последнее редактирование: Ноябрь 16, 2015, 03:03:48 pm от sysadmin »
Все-таки последовательность задач "эксперимент > пи@дец > чтение документации" даже из продвинутых админов тяжело выбить.

 

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8202
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Re: Удаление файлов по маске.
« Ответ #1 : Ноябрь 16, 2015, 03:04:53 pm »
Измени переменную:
Dim sFolder: sFolder = "d:\1"
На:
Dim sFolder: sFolder = "c:\"
дорогу осилит идущий...
......................
MCP, MCTS, RHCSA
......................
also aka xck...

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8202
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Re: Удаление файлов по маске.
« Ответ #2 : Ноябрь 16, 2015, 03:05:38 pm »
не увидел, нужно что бы в подпапках так же удалял?

Оффлайн bessmertnyi_poni

  • Специалист ИТ
  • ****
  • Сообщений: 453
  • Karma: +14/-0
  • Пол: Мужской
  • Под дождем суп можно есть бесконечно!
    • Share Post
Re: Удаление файлов по маске.
« Ответ #3 : Ноябрь 16, 2015, 03:06:06 pm »
Dim sFolder: sFolder = "c:\"
Удаляет только что в корне лежит, вложения не удаляет!
Необходимо что во всех папках диска "С" удалил, т.е. вложения

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8202
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Re: Удаление файлов по маске.
« Ответ #4 : Ноябрь 16, 2015, 03:08:50 pm »
Вот скрипт, укажи только нужные расширения:
OPTION EXPLICIT
DIM strExtensionsToDelete,strFolder
DIM objFSO

' ************************************************************
' Setup
' ************************************************************

' Folder to delete files from (files will also be deleted from subfolders)
strFolder = "R:\PublishTemp"
' A comma separated list of file extensions
' Files with extensions provided in the list below will be deleted
strExtensionsToDelete = "wav,avi,mp3"

' ************************************************************

set objFSO = createobject("Scripting.FileSystemObject")

RecursiveDeleteByExtension strFolder,strExtensionsToDelete

wscript.echo "Finished"

sub RecursiveDeleteByExtension(byval strDirectory,strExtensionsToDelete)
DIM objFolder, objSubFolder, objFile
DIM strExt

set objFolder = objFSO.GetFolder(strDirectory)
for each objFile in objFolder.Files
for each strExt in SPLIT(UCASE(strExtensionsToDelete),",")
if RIGHT(UCASE(objFile.Path),LEN(strExt)+1) = "." & strExt then
wscript.echo "Deleting:" & objFile.Path
objFile.Delete
exit for
end if
next
next
for each objSubFolder in objFolder.SubFolders
RecursiveDeleteByExtension objSubFolder.Path,strExtensionsToDelete
next
end sub

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8202
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Re: Удаление файлов по маске.
« Ответ #5 : Ноябрь 16, 2015, 03:11:53 pm »
только на тестовой машине проверь в начале )

Оффлайн bessmertnyi_poni

  • Специалист ИТ
  • ****
  • Сообщений: 453
  • Karma: +14/-0
  • Пол: Мужской
  • Под дождем суп можно есть бесконечно!
    • Share Post
Re: Удаление файлов по маске.
« Ответ #6 : Ноябрь 16, 2015, 03:16:57 pm »
Ошибка в коде на 28 строке, символ 2.
strFolder= изменил.
Поставил своё расширение.


Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8202
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Re: Удаление файлов по маске.
« Ответ #7 : Ноябрь 16, 2015, 03:38:07 pm »
Скрипт заработал или нет?

Оффлайн bessmertnyi_poni

  • Специалист ИТ
  • ****
  • Сообщений: 453
  • Karma: +14/-0
  • Пол: Мужской
  • Под дождем суп можно есть бесконечно!
    • Share Post
Re: Удаление файлов по маске.
« Ответ #8 : Ноябрь 16, 2015, 03:38:41 pm »
Скрипт заработал или нет?
неа)

Оффлайн sysadmin

  • Administrator
  • сисадми́н
  • *****
  • Сообщений: 8202
  • Karma: +112/-0
  • Пол: Мужской
    • Share Post
    • сайт для сис. админов и не только...
Re: Удаление файлов по маске.
« Ответ #9 : Ноябрь 16, 2015, 04:35:07 pm »
У меня все четко работает, проверил только что:
OPTION EXPLICIT
DIM strExtensionsToDelete,strFolder
DIM objFSO

' ************************************************************
' Setup
' ************************************************************

' Folder to delete files from (files will also be deleted from subfolders)
strFolder = "C:\tttt\test"
' A comma separated list of file extensions
' Files with extensions provided in the list below will be deleted
strExtensionsToDelete = "mp3"

' ************************************************************

set objFSO = createobject("Scripting.FileSystemObject")

RecursiveDeleteByExtension strFolder,strExtensionsToDelete

wscript.echo "Finished"

sub RecursiveDeleteByExtension(byval strDirectory,strExtensionsToDelete)
DIM objFolder, objSubFolder, objFile
DIM strExt

set objFolder = objFSO.GetFolder(strDirectory)
for each objFile in objFolder.Files
for each strExt in SPLIT(UCASE(strExtensionsToDelete),",")
if RIGHT(UCASE(objFile.Path),LEN(strExt)+1) = "." & strExt then
wscript.echo "Deleting:" & objFile.Path
objFile.Delete
exit for
end if
next
next
for each objSubFolder in objFolder.SubFolders
RecursiveDeleteByExtension objSubFolder.Path,strExtensionsToDelete
next
end sub


Измени путь в переменной:
strFolder = "C:\tttt\test"
И расширение:
strExtensionsToDelete = "mp3"


xx
Linux - удаление файлов содержащих определенный символ

Автор sysadmin

0 Ответов
290 Просмотров
Последний ответ Декабрь 04, 2015, 10:56:48 pm
от sysadmin
xx
Удаление\Добавление контентных фильтров для прикрепляемых файлов

Автор sysadmin

0 Ответов
1256 Просмотров
Последний ответ Сентябрь 07, 2011, 02:59:45 pm
от sysadmin
xx
Скрипт на удаление файлов и папок старше трех месяцев в Linux

Автор sysadmin

2 Ответов
4014 Просмотров
Последний ответ Август 26, 2014, 10:06:11 pm
от sysadmin
xx
PowerShell - удалить файлы из папки по маске

Автор sysadmin

0 Ответов
502 Просмотров
Последний ответ Октябрь 27, 2016, 11:47:08 am
от sysadmin