Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 17.08.2014
Сообщений: 37
1

Удалить файл, зная только часть его имени

31.01.2015, 12:45. Просмотров 1080. Ответов 7
Метки нет (Все метки)

Здравствуйте.

Допустим есть файл без расширения "KK123", но каждый раз при перезагрузке компьютера цифры меняются в рандомном порядке "KK321". Как удалить его?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2015, 12:45
Ответы с готовыми решениями:

Как с помощью FindWindowA найти окно, зная только часть его имени?
Вообщем написал если найдет окно с Cheat Engine 6.3 то будет выполнять действие,например HWND...

Как удалить определённый EXE-файл, не зная его имени?
Как удалить определенный exe файл не зная имени файла. Пример, есть файл батник (test.bat) и...

Как отправить файл на сервер через FTP не зная имени а зная только расширение файла?
Доброго времени суток! Очень нужна ваша помощь форумчане.. Пытаюсь отправить файл через FTP на...

Скопировать в папку, зная только часть ее имени
Как скопировать файлы из C:\ в папку если известна только часть ее имени например...

7
Администратор
Эксперт .NET
12899 / 10517 / 4357
Регистрация: 17.03.2014
Сообщений: 21,204
Записей в блоге: 1
31.01.2015, 12:54 2
Лучший ответ Сообщение было отмечено objerkoff как решение

Решение

objerkoff, например так:
vb.net
1
2
3
4
5
6
7
8
9
10
Imports System.IO
Imports System.Text.RegularExpressions
 
Const root As String = "D:\Temp"
Dim fileName As String = Directory.EnumerateFiles(root). _
                            Where( Function(n) Regex.IsMatch(Path.GetFileName(n), "kk\d+") ). _
                            FirstOrDefault()
If fileName IsNot Nothing Then
    File.Delete(fileName)
End If
2
3559 / 2888 / 700
Регистрация: 02.02.2013
Сообщений: 2,766
Записей в блоге: 2
31.01.2015, 14:16 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

В предлагаемом виде запустить код, почему то не удалось?
Пришлось несколько реорганизовать
vb.net
1
2
3
4
5
6
        Dim fileNames() As String = Directory.EnumerateFiles("C:\01").ToArray
        Dim dd = From d In fileNames Where Regex.IsMatch(Path.GetFileName(d), "kk\d+")
        'результат
        Dim ss As String = ""
        If dd.Count > 0 Then ss = String.Join(vbCrLf, dd)
        MsgBox(ss)
но, мне кажется, можно проще
vb.net
1
2
3
4
5
        Dim fileNames() As String = Directory.GetFiles("C:\01", "kk????.txt")
        'результат
        Dim ss As String = ""
        If fileNames.Count > 0 Then ss = String.Join(vbCrLf, fileNames)
        MsgBox(ss)
2
Администратор
Эксперт .NET
12899 / 10517 / 4357
Регистрация: 17.03.2014
Сообщений: 21,204
Записей в блоге: 1
31.01.2015, 18:39 4
Цитата Сообщение от ovva Посмотреть сообщение
но, мне кажется, можно проще
Можно. Только неплохо пояснить что маска вида kk??? найдет файлы имя которого начинается с kk и далее три любых символа. И значит она найдет файл kkXYZ, в то время как у ТС имя файла должно заканчиваться числом. Именно из-за них и приходится использовать регулярные выражения. Тем не менее оба решения можно совместить. В моем начальном решении, кстати, используется не совсем правильное регулярное выражение. Вместо kk\d+ лучше написать ^kk\d+$
vb.net
1
2
3
4
5
6
7
Const root As String = "D:\Temp"
' Если кол-во цифр всегда равно 3, то можно использовать маску kk???
Dim fileName As String = Directory.EnumerateFiles(root, "kk*"). _
       FirstOrDefault(Function(n) Regex.IsMatch(Path.GetFileName(n), "^kk\d+$"))
If fileName IsNot Nothing Then
    File.Delete(fileName)
End If
0
3559 / 2888 / 700
Регистрация: 02.02.2013
Сообщений: 2,766
Записей в блоге: 2
31.01.2015, 20:33 5
По маске "kk???" будут найдены: kkxxx, kkxx, kkx, где x – любой символ.
0
Администратор
Эксперт .NET
12899 / 10517 / 4357
Регистрация: 17.03.2014
Сообщений: 21,204
Записей в блоге: 1
31.01.2015, 20:41 6
Цитата Сообщение от ovva Посмотреть сообщение
По маске "kk???" будут найдены: kkxxx, kkxx, kkx, где x – любой символ.
Верно. Тут я ошибся. Однако ключевой момент то что там может стоять любой символ, а не только цифра.
0
1 / 1 / 1
Регистрация: 17.08.2014
Сообщений: 37
06.02.2015, 00:21  [ТС] 7
Спасибо за ответы!
Возможно ли это сделать на .NET 3.5 ?
0
Администратор
Эксперт .NET
12899 / 10517 / 4357
Регистрация: 17.03.2014
Сообщений: 21,204
Записей в блоге: 1
06.02.2015, 12:52 8
objerkoff, можно. Если LINQ выражения не компилируются, то замени их циклом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2015, 12:52

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

Найти окно, зная часть имени его класса
Привет всем! Как найти Handle дочерное окно зная его имя('stop , please stop , don't leave'); а...

Как получить файл не зная его имени
На сервер отправляется файл, имени которого я не знаю. Вопрос - каким образом выполнить его перенос...

Как скачать файл с сайта зная только часть файла и расширение?
Возможно ли скачать файл зная только часть файла и расширение? Или это доступ к каталогу ножен где...

Как удалить TImage* зная только его Hint?
Всем Привет!:senor: Появилась задачка. есть динамически созданные объекты типа TImage у них есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.