поиск и удаление фалов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

поиск и удаление фалов

Сообщение Cramac » 04.07.2007 (Ср) 23:10

Всем привет. Подскажите, как удалить в заданной папке все файлы 0 размера?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.07.2007 (Ср) 23:12

Легко. Надо взять... и удалить.

(качество ответа соотвествует качеству вопроса)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.07.2007 (Ср) 23:23

Качество вопроса как отдельно взятой сущности совершенно приемлемое.

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

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 05.07.2007 (Чт) 8:12

GSerg, простите, а вы сами пробовали по таким запросам что то поискать? По точной фразе ничего нет, а по любому слову все что угодно но не по теме вопроса.

Вместо того что бы слать в поиск, лучше бы дали команды, а то только флуду больше развели.

или полезные две строчки вам сложнее написать???

размер файла так:
Open apppath & "file.msg" For Input As #1
LOF(1)

удалить так:
kill ......

а как выбор файлов сделать?

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 05.07.2007 (Чт) 8:19

Cramac писал(а):
а как выбор файлов сделать?


dir
подписи нет и не будет

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.07.2007 (Чт) 9:43

GSerg, простите, а вы сами пробовали по таким запросам что то поискать? По точной фразе ничего нет, а по любому слову все что угодно но не по теме вопроса.
Справа наверху есть всем известный поисковик с недвусмысленной галочкой ниже - bbs и т.д. И (о чудо!) он таки выдает единственный топик в точности по запросу GSerg'а, где этот вопрос обсужден довольно-таки подробно.
Лучший способ понять что-то самому — объяснить это другому.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.07.2007 (Чт) 12:52

Код: Выделить всё
var fso = new ActiveXObject("Scriting.FileSystemObject");
var files = new Enumerator (fso.GetFolder("c:\\123").Files);

for (;!files.atEnd();files.moveNext()) {

if (!files.item().Size>0) files.item().Delete();

}





Вот что пришло мне на ум :) На VB достаточно легко перевести ;)

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 06.07.2007 (Пт) 6:40

Один из вариантов:

Код: Выделить всё
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long

Private Const MAX_PATH = 260

Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
        dwFileAttributes As Long
        ftCreationTime As FILETIME
        ftLastAccessTime As FILETIME
        ftLastWriteTime As FILETIME
        nFileSizeHigh As Long
        nFileSizeLow As Long
        dwReserved0 As Long
        dwReserved1 As Long
        cFileName As String * MAX_PATH
        cAlternate As String * 14
End Type

Private Sub DelNullFiles(ByVal lpPath As String)
Dim hFile As Long
Dim FFD As WIN32_FIND_DATA
Dim FN As String
If Len(lpPath) = 0 Then Exit Sub
If Not (Right$(lpPath, 1) = "\") Then lpPath = lpPath & "\"
hFile = FindFirstFile(lpPath & "*.*", FFD)
If Not (hFile = 0) Then
Do
If Not ((FFD.dwFileAttributes And &H10) = &H10) And (FFD.nFileSizeLow = 0) And (FFD.nFileSizeHigh = 0) Then
FN = FFD.cFileName
FN = Left$(FN, lstrlen(FN))
DeleteFile lpPath & FN
End If
Loop While FindNextFile(hFile, FFD) = 1
FindClose hFile
End If
End Sub

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 06.07.2007 (Пт) 15:31

-=}-{i$ER=-
Это последнее предупреждение. Если новый ник не будет сообщён мне (с помощью ЛС, ICQ, e-mail, и тд.) и при этом ты напишешь мне ещё одно сообщение твой аккаут будет забанен.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 06.07.2007 (Пт) 15:54

Ник изменён.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ACiD
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 261
Зарегистрирован: 10.12.2005 (Сб) 2:29
Откуда: г. Санкт - Петербург

Сообщение ACiD » 07.07.2007 (Сб) 1:05

Код: Выделить всё
NextFile = Dir(Path, vbNormal)
Do Until NextFile = vbNullString
If FileLen(Path & NextFile) = 0 Then Kill Path & NextFile
NextFile = Dir
DoEvents
Loop

Просто не удержался. :roll:

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 07.07.2007 (Сб) 17:22

Ну для определения размера файла можно воспользоваться функцией
Код: Выделить всё
FileSize = FileLen(FilePath)


Для получения списка файлов я обычно пользуюсь FSO.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot], Yandex-бот и гости: 97

    TopList