Вопрос: Переименовать массив файлов | Добавлено: 01.03.06 10:33 |
Автор вопроса: ![]() |
Есть папка с файлами (100, mp3'шки) штук. У каждого в имени первые 5 символа номер файла - "095. " Удалить эти 5 символом в массиве у всех файлов. Нашел пример дает кол-во файлов в папке и я его немнго уже поправил для себя. Где отрезать и сохранять не разберусь Option Explicit
Function ListFiles(ByVal Path As String, Optional ByVal NestedDirs As Boolean) As String() Dim fso As New Scripting.FileSystemObject Dim fld As Scripting.Folder Dim fileList As String Set fld = fso.GetFolder(Path) fileList = ListFilesPriv(fld, NestedDirs) ListFiles = Split(fileList, vbCrLf) Text1 = Text1.Text & vbCrLf & fileList End Function Function ListFilesPriv(ByVal fld As Scripting.Folder, ByVal NestedDirs As Boolean) As String Dim fil As Scripting.File Dim subfld As Scripting.Folder For Each fil In fld.Files ListFilesPriv = ListFilesPriv & vbCrLf & fil.Path Next If NestedDirs Then For Each subfld In fld.SubFolders ListFilesPriv = ListFilesPriv & ListFilesPriv(subfld, NestedDirs) Next End If End Function Private Sub Command1_Click() Label1 = "Файлов штук " & UBound(ListFiles("D:\1")) End Sub Private Sub Command2_Click() End End Sub |
Ответы | Всего ответов: 19 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #1 | Добавлено: 01.03.06 11:01 |
Может
Option Explicit Private Sub Form_Load() Dim FSO As New FileSystemObject Dim sFile As File For Each sFile In FSO.GetFolder("C:\MyFolder" ![]() If UCase(FSO.GetExtensionName(sFile)) = "MP3" Then sFile.Name = Mid$(sFile.Name, 6) End If Next sFile End Sub Только странные имена какие-то ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 2 Ответов: 23 |
Профиль | Цитата | #2 | Добавлено: 01.03.06 11:02 |
ты хочешь отрезать куски названий файлов для своей проги или вообще на диске переименовывать? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 176176951 Вопросов: 14 Ответов: 655 |
Профиль | Цитата | #3 | Добавлено: 01.03.06 11:21 |
http://soft.oszone.net/program.php?pid=825 |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #4 | Добавлено: 01.03.06 11:42 |
http://soft.oszone.net/program.php?pid=825 Хе... Лам ![]() |
Номер ответа: 5 Автор ответа: ![]() ![]() Вопросов: 45 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 01.03.06 15:16 |
LamerOnLine:
Объект не поддерживает это свойство или метод(438) на строчке: For Each sFile In FSO.GetFolder("
![]() ![]() zulus: На диске в папке лежат MP3'ихи, отрезать от имени каждой первые 5 символов и сохранить уже исправленные имена Pashenko: Я хочу для себя сделать сам, тем более если это не сложно. А извини использовать для этого дело 1,5 метровую прогу, чушь. Хотя не буду ругать прогу - которую даже не смотрел, пускай она поможет кому нить другому. ![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #6 | Добавлено: 01.03.06 15:24 |
Пардон, конечно
For Each sFile In FSO.GetFolder("C:\" ![]() |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 219571279 Вопросов: 34 Ответов: 486 |
Профиль | Цитата | #7 | Добавлено: 01.03.06 15:26 |
Private Sub Command1_Click()
Dim DelSimv As Integer 'Количество символов в начале имени файла 'которые нужно удалить With File1 .Path = "Путь к папке" .Pattern = ".mp3" For a = 0 To .ListCount - 1 FileCopy .Path & "\" & .List ![]() ![]() ![]() Kill .Path & "\" & .List ![]() Next End With End Sub |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #8 | Добавлено: 01.03.06 15:31 |
2avdey прикольнуться решил над человеком? ![]() Если уж неохота использовать FSO - то юзай Name. Никаких FileCopy и Kill'ов, это самый тупой и жестокий метод из всех что можно было придумать. |
Номер ответа: 9 Автор ответа: ![]() ![]() Вопросов: 45 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 01.03.06 16:12 |
avdey: Спасибо и респект, не много подбацал и все гуд!
Вешает комп на 1,5 минуты намертво, но после результат на лицо. Чем вызвана такая загрузка? Что используя FSO нельзя переименовать файл? |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #10 | Добавлено: 01.03.06 16:18 |
Вешает комп на 1,5 минуты намертво, но после результат на лицо. Чем вызвана такая загрузка? Тем что нет обработки события UserDown ![]() [root], ты в самом деле такой лам или просто код не смотришь? Этот код скопировал все твои 100 mp3шек с новыми именами, а старые удалил. Оттуда и загрузка. Я же сказал - метод тупой до жути, а ты... ![]() Что используя FSO нельзя переименовать файл? Я же тебе написал как можно переименовать файлы через FSO. Занимает секунды две от силы ![]() |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 176176951 Вопросов: 14 Ответов: 655 |
Профиль | Цитата | #11 | Добавлено: 01.03.06 16:20 |
Используй вместо "filecopy" "name".
И вставляй после него "doevents". ...а может, и не надо, может, и так пропрёт... Я в своё время писал что-то подобное: Dim i As Long
Dim FName As String Dim FullName As String Dim NewName As String On Error GoTo ErrRename For i = 0 To File1.ListCount - 1 FName = File1.List(i) FullName = File1.Path & "\" & File1.List(i) If Mid$(FName, 1, Len(Prefix)) = Prefix Then NewName = File1.Path & "\" & Mid$(File1.List(i), Len(Prefix) + 1) Name FullName As NewName End If Next i Command3_Click Exit Sub ErrRename: Dim Ret As Long Ret = MsgBox("Error " & Err.Number & ": " & Err.Description & vbCrLf & FName, vbCritical Or vbOKCancel) If Ret = 2 Then Command3_Click Exit Sub Else Resume Next End If Несколько тысяч файлов переименовывалось, и ничего, не тормозило. |
Номер ответа: 12 Автор ответа: ![]() ![]() Вопросов: 45 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 01.03.06 16:21 |
LamerOnLine: И тебе спасибо - все работает
Да метод avdey'я и правда жесток. А как Name использовать - для тех же целей? |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 219571279 Вопросов: 34 Ответов: 486 |
Профиль | Цитата | #13 | Добавлено: 01.03.06 16:26 |
Да, метод тупой до жути, но простой, краткий и понятный...
А комп подвисает... суешь DoEvents в цикл и все пучком, правда работать медленнее будет. |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #14 | Добавлено: 01.03.06 16:36 |
Name старый_файл as новый_файл
заменяет FileCopy и Kill, кроме того не выполняет лишнего копирования. Это жестоко не только по отношению к пользователю, но и к харду. Интересно, как бы DVDшки таким методом переименовывать... ![]() Вот почему я всегда в таких случаях рекомендую использовать FSO - там вся рутинная работа уже сделана. Никакого гемора со слешами, плюс, как я уже сказал, присутствует обработчик UserDown ![]() Хотя при должном умении и его обойти можно ![]() |
Номер ответа: 15 Автор ответа: ![]() ![]() Вопросов: 45 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #15 | Добавлено: 01.03.06 16:38 |
LamerOnLine: какие мы юмористы
Млин у меня за полчаса 2 раза свет отрубили, причем я еще успел за сигаретами сбегать! А насчет лам, знаю мало, а лам это то по мойму ты по определению! ![]() Я смотрю последнее время на форуме весеннее эмоциональное обострение, и все до жути умные и готовы убить друг друга на пустом месте! На счет твоего способа я все понял, я имел ввиду у FSO есть различные методы работы с папками, файлами, почему нет rename? Короче забей Чего то я разозлился, чуток Курю на балконе, смотрю уазик подъехал к подстанции, я на комп посмотрел и подумал пора его вырубить на всякий, тут бум свет потух, а из подстанции чел выходит, гад, ааааааааааа Pashenko: че за чушь? |
|