Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Удалить файлы со спец-символами в названии с помощью VBA, При передачи названия файла в переменную символы заменяются на ??
 
Ещё раз хотел бы вернуться к теме. Т.к. у меня очень много файлов (несколько сотен тысяч) и, соответственно, большой список на удаления (тоже больше ста тысяч), то указанный способ поиска в имени файла ID работает ооочень долго.
Я вообще ID стал вытаскивать только потому, что думал, что нельзя без искажения достать из ячеек имя файла полностью.
Но в итоге нашел значительно более быстрый способ, где не нужно прибегать к переменной:
Код
Sub DelFiles()
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
FSO.DeleteFile "C:\Temp\" & ActiveSheet.Range("A1").Value
End Sub
Удалить файлы со спец-символами в названии с помощью VBA, При передачи названия файла в переменную символы заменяются на ??
 
Супер! Такого рода решение я и искал. Большое спасибо!
Удалить файлы со спец-символами в названии с помощью VBA, При передачи названия файла в переменную символы заменяются на ??
 
Так ведь удаление не работает, значит то, что я вижу визуально соответствует действительности. Файлы без символов դր удаляются, как только очередь доходит до файла с этими символами в названии - возникает ошибка. Попробуйте сами - убедитесь, что действительно имя файла искажается.
Удалить файлы со спец-символами в названии с помощью VBA, При передачи названия файла в переменную символы заменяются на ??
 
Цитата
Hugo написал: Как-то не верю что "оно превращается"... Как определяли?
Запускал код. Несколько первых файлов, без таких символов, удалились. Дальше - ошибка. Смотрю значение переменной при отладке - там имя с вопросительными знаками вместо символов валюты.
Удалить файлы со спец-символами в названии с помощью VBA, При передачи названия файла в переменную символы заменяются на ??
 
Нет, такой способ не подходит. Я специально оговорку сделал! Нужно не всё  удалить, а только определенные файлы. Просто код урезал. Вообще код сверяет каждый найденный файл со списком ID, который должен содержаться в имени jpg файла (цифры в конце после последнего знака подчёркивания). Если в имени содержится ID, то файл нужно удалить. Если нет - то оставить.
Как это сделать?
Изменено: veery_good - 26.09.2016 09:39:10
Удалить файлы со спец-символами в названии с помощью VBA, При передачи названия файла в переменную символы заменяются на ??
 
Добрый день!
Возникла проблема с удалением файлов, содержащих в названии символы unicode. Например: Армения_1994_25 դր.jpg
Когда название файла с помощью strFileName = Dir передаётся  в переменную, то оно превращается в Армения_1994_25 ??.jpg
И соответственно, когда я пытаюсь его удалить командой Kill  вылетает ошибка, т.к. файла с вопросами в названии в папке нет.
Как можно обойти эту проблему? Может возможно обойтись здесь без переменной, которая искажает имя файла?

Код ниже урезан, вообще нужно выборочно файлы удалить, но тут упрощен до удаления  всех файлов
Код
Dim strDirPath, strMaskSearch, strFileName As String
strDirPath = "D:/Test1/" 'Папка поиска
strMaskSearch = "*.jpg*" 'Маска поиска
 
'Получаем первый файл соответствующий шаблону
strFileName = Dir(strDirPath & strMaskSearch)
 
Do While strFileName <> "" 'До тех пор пока файлы "не закончатся"
    Kill strDirPath & strFileName
    strFileName = Dir 'Следующий файл
Loop
Страницы: 1
Наверх