Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как удалить все файлы во временной папке?  [new]
sanya_tir
Member

Откуда: Москва
Сообщений: 206
Задача: Нужно при закрытии программы удалить все файлы в папке c:\temp, но при этом там возможно будут открытые файлы, их нужно оставить, удаляться должно без всевозможных запросов-подтверждениев.

поставил set safety off
Пробовал:
1. erase 'c:\temp\*.*' - спотыкается на открытых файлах (выдает ошибку)

2. run del c:\temp\*.* - выдает запрос "вы уверены..." но после этого удаляет все как мне и нужно (не трогая открытые файлы)

3. run del c:\temp\*.* /q - только мигнет командным окном на долю секунды, но ничего не удаляет. При этом эта же команда в командной строке срабатывает правильно, а из фокса не хочет.

Как быть? или остается только вариант перебирать все файлы, проверять на открытость и удалять? Есть ведь команда del c:\temp\*.* /q, почему из фокса она не срабатывает нормально. (VFP 6)

Спасибо.
26 фев 06, 13:20    [2390678]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить все файлы во временной папке?  [new]
AleksMed
Member

Откуда: Россия, Серпухов-Москва
Сообщений: 1546
run del c:\temp\*.* /-p
26 фев 06, 13:31    [2390764]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить все файлы во временной папке?  [new]
sanya_tir
Member

Откуда: Москва
Сообщений: 206
AleksMed
run del c:\temp\*.* /-p


не работает
26 фев 06, 13:36    [2390787]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить все файлы во временной папке?  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Если "в лоб", то можно так:

* Подавляем обработчик ошибок
LOCAL lcError
lcError = ON("ERROR")
ON ERROR *

LOCAL lnI, laDir(1)
FOR lnI = 1 TO ADIR(laDir,"C:\temp\*.*")
	DELETE FILE ("C:\temp\"+laDid[m.lnI,1])
ENDFOR

* Восстанавиливаю обработчик ошибок
ON ERROR &lcError

Тут можно и индикатор прогресса воткнуть, и журнал удаления создать...

Вопрос ведь не в том, чтобы не выдавалось сообщение об ошибке, а в том, чтобы ПОСЛЕ этого сообщения процесс удаления не прерывался.
26 фев 06, 13:52    [2390880]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить все файлы во временной папке?  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
ВладимирМ
Если "в лоб", то можно так:

[src]
* Подавляем обработчик ошибок
LOCAL lcError
lcError = ON("ERROR")
ON ERROR *

Владимир, а разве в VFP 6.0 еще TRY... CATCH ... ENDTRY не появился?
С уважением, Алексей.
26 фев 06, 14:01    [2390936]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить все файлы во временной папке?  [new]
sanya_tir
Member

Откуда: Москва
Сообщений: 206
Спасибо ВладимирМ.

сделал так

set safety off
LOCAL lcError
lcError = ON("ERROR")
on error *
erase 'c:\temp\*.*'
ON ERROR &lcError

все работает :)
26 фев 06, 14:05    [2390958]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить все файлы во временной папке?  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Не уверен, что это будет нормально работать.
А что если ERASE сразу наткнется на занятый файл и "отвалится" по ошибке?
Мне кажется, что перебор надежнее.
С уважением, Алексей
26 фев 06, 14:15    [2391001]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить все файлы во временной папке?  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Aleksey-K
а разве в VFP 6.0 еще TRY... CATCH ... ENDTRY не появился?

Нет.

TRY... CATCH ... ENDTRY появился в VFP8
26 фев 06, 14:45    [2391129]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить все файлы во временной папке?  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi sanya_tir!

Первый вопрос - ЗАЧЕМ это нужно делать? Ты сам насоздавал этих файлов? Если
так - то просто нормально пиши работу со временными файлами - если где-то
создал - то потом его и удаляй.
Если просто удалить "чужой мусор" - то оно конечно можно, но зачем - ведь
есть стандартная программа в винде которая в частности и temp папки чистит,
а кроме того то что файл в temp никем не "занят" ещё не значит что его можно
спокойно удалять! Мало ли как чужая программа написана - может она не держит
файл посточнно открытым, НО может упасть, если его удалить не закрыв
программу...

Posted via ActualForum NNTP Server 1.3

3 мар 06, 02:17    [2411294]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить