Решая задачу удаления файлов с диска, из 1С, мы можем столкнуться с такой проблемой - файл, который нужно удалить, может быть заблокирован другой программой или службой.
Казалось бы, что всё просто. Пусть пользователь закроет приложение, которое мешает...
Но что если вмешательство пользователя не то, чтобы нежелательно, а просто невозможно.
Помочь может маленькая, но очень полезная программа Unlocker
В ней реализована возможность работы через командную строку.
Параметры командной строки Unlocker:
Через командную строку можно передать путь к файлу или путь к списку файлов, которые необходимо удалить. Удаление можно производить в "тихом" режиме.
Устанавливаем Unlocker и остается только реализовать вызов нужной команды из 1С:
В данную процедуру достаточно передать путь к папке, которую нужно почистить.
Казалось бы, что всё просто. Пусть пользователь закроет приложение, которое мешает...
Но что если вмешательство пользователя не то, чтобы нежелательно, а просто невозможно.
Помочь может маленькая, но очень полезная программа Unlocker
В ней реализована возможность работы через командную строку.
Параметры командной строки Unlocker:
Через командную строку можно передать путь к файлу или путь к списку файлов, которые необходимо удалить. Удаление можно производить в "тихом" режиме.
Устанавливаем Unlocker и остается только реализовать вызов нужной команды из 1С:
Процедура ОчиститьКаталогВременныхФайловПередСканированием(Путь = "")
//Список файлов в каталоге пользователя
МассивФайлов = НайтиФайлы(Путь, "*");
Файл = Неопределено;
СписокФайловНаУдаление = Неопределено;
//Создадим список удаляемых файлов
Для Каждого ФайлКаталога Из МассивФайлов Цикл
Если СписокФайловНаУдаление = Неопределено Тогда
//Во временном файле будем хранить список файлов на удаление
СписокФайловНаУдаление=ПолучитьИмяВременногоФайла("txt");
Файл = Новый ЗаписьТекста(СписокФайловНаУдаление,КодировкаТекста.ANSI);
КонецЕсли;
Файл.ЗаписатьСтроку(ФайлКаталога.ПолноеИмя);
КонецЦикла;
Если Файл = Неопределено Тогда
Возврат;
КонецЕсли;
Файл.Закрыть();
Попытка
//ЗАПУСКАЕМ UNLOCKER - Удаление
//L - удалять файлы по списку внутри текстового файла
//D - режим удаления
//S - тихий режим (без открытия программного интерфейса)
//ВАЖНО! Unlocker корректно удаляет файлы только в том случае если в Пути к файлам НЕТ пробелов
КомандаУдаление = """C:\Program Files\Unlocker\Unlocker.exe"" " + СписокФайловНаУдаление + " /L /D /S";
#Если Клиент Тогда
КомандаСистемы(КомандаУдаление);
#Иначе
WshShell=Новый COMОбъект("Wscript.Shell");
WshShell.run(КомандаУдаление);
#КонецЕсли
Исключение
//ДОБАВИТЬ КОД ОБРАБОТКИ ОШИБКИ
КонецПопытки;
КонецПроцедуры
В данную процедуру достаточно передать путь к папке, которую нужно почистить.
0 коммент.:
Отправить комментарий