Страница: 1 | 2 |
Вопрос: Переименовать массив файлов
Добавлено: 01.03.06 10:33
Автор вопроса: [root] | Web-сайт:
Есть папка с файлами (100, mp3'шки) штук.
У каждого в имени первые 5 символа номер файла - "095. "
Удалить эти 5 символом в массиве у всех файлов.
Нашел пример дает кол-во файлов в папке и я его немнго уже поправил
для себя.
Где отрезать и сохранять не разберусь
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
Автор ответа:
LamerOnLine
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
Автор ответа:
zulus
Вопросов: 2
Ответов: 23
Профиль | | #2
Добавлено: 01.03.06 11:02
ты хочешь отрезать куски названий файлов для своей проги или вообще на диске переименовывать?
Номер ответа: 3
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #3
Добавлено: 01.03.06 11:21
http://soft.oszone.net/program.php?pid=825
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 01.03.06 11:42
http://soft.oszone.net/program.php?pid=825
Хе... Лам
Номер ответа: 5
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #5
Добавлено: 01.03.06 15:16
LamerOnLine:
Объект не поддерживает это свойство или метод(438)
на строчке:
zulus:
На диске в папке лежат MP3'ихи, отрезать от имени каждой первые
5 символов и сохранить уже исправленные имена
Pashenko:
Я хочу для себя сделать сам, тем более если это не сложно.
А извини использовать для этого дело 1,5 метровую прогу,
чушь.
Хотя не буду ругать прогу - которую даже не смотрел, пускай
она поможет кому нить другому.
Номер ответа: 6
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #6
Добавлено: 01.03.06 15:24
Пардон, конечно
For Each sFile In FSO.GetFolder("C:\".Files
Номер ответа: 7
Автор ответа:
avdey
ICQ: 219571279
Вопросов: 34
Ответов: 486
Профиль | | #7
Добавлено: 01.03.06 15:26
Dim DelSimv As Integer 'Количество символов в начале имени файла
'которые нужно удалить
With File1
.Path = "Путь к папке"
.Pattern = ".mp3"
For a = 0 To .ListCount - 1
FileCopy .Path & "\" & .List, .Path & "\" & Right(.List, Len(.List) - DelSimv) ' Переименовывает
Kill .Path & "\" & .List 'Удаляет старый
Next
End With
End Sub
Номер ответа: 8
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #8
Добавлено: 01.03.06 15:31
2avdey прикольнуться решил над человеком? )
Если уж неохота использовать FSO - то юзай Name.
Никаких FileCopy и Kill'ов, это самый тупой и жестокий метод из всех что можно было придумать.
Номер ответа: 9
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #9
Добавлено: 01.03.06 16:12
avdey: Спасибо и респект, не много подбацал и все гуд!
Вешает комп на 1,5 минуты намертво, но после результат на лицо.
Чем вызвана такая загрузка?
Что используя FSO нельзя переименовать файл?
Номер ответа: 10
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #10
Добавлено: 01.03.06 16:18
Вешает комп на 1,5 минуты намертво, но после результат на лицо.
Чем вызвана такая загрузка?
Тем что нет обработки события UserDown )
[root], ты в самом деле такой лам или просто код не смотришь?
Этот код скопировал все твои 100 mp3шек с новыми именами, а старые удалил. Оттуда и загрузка. Я же сказал - метод тупой до жути, а ты... ))
Что используя FSO нельзя переименовать файл?
Я же тебе написал как можно переименовать файлы через FSO. Занимает секунды две от силы
Номер ответа: 11
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #11
Добавлено: 01.03.06 16:20
Используй вместо "filecopy" "name".
И вставляй после него "doevents".
...а может, и не надо, может, и так пропрёт...
Я в своё время писал что-то подобное:
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
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #12
Добавлено: 01.03.06 16:21
LamerOnLine: И тебе спасибо - все работает
Да метод avdey'я и правда жесток.
А как Name использовать - для тех же целей?
Номер ответа: 13
Автор ответа:
avdey
ICQ: 219571279
Вопросов: 34
Ответов: 486
Профиль | | #13
Добавлено: 01.03.06 16:26
Да, метод тупой до жути, но простой, краткий и понятный...
А комп подвисает... суешь DoEvents в цикл и все пучком, правда работать медленнее будет.
Номер ответа: 14
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #14
Добавлено: 01.03.06 16:36
Name старый_файл as новый_файл
заменяет FileCopy и Kill, кроме того не выполняет лишнего копирования. Это жестоко не только по отношению к пользователю, но и к харду.
Интересно, как бы DVDшки таким методом переименовывать... ))))))
Вот почему я всегда в таких случаях рекомендую использовать FSO - там вся рутинная работа уже сделана. Никакого гемора со слешами, плюс, как я уже сказал, присутствует обработчик UserDown
Хотя при должном умении и его обойти можно
Номер ответа: 15
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #15
Добавлено: 01.03.06 16:38
LamerOnLine: какие мы юмористы
Млин у меня за полчаса 2 раза свет отрубили, причем я еще успел за
сигаретами сбегать!
А насчет лам, знаю мало, а лам это то по мойму ты по определению!
Я смотрю последнее время на форуме весеннее эмоциональное обострение,
и все до жути умные и готовы убить друг друга на пустом месте!
На счет твоего способа я все понял, я имел ввиду у FSO есть различные
методы работы с папками, файлами, почему нет rename?
Короче забей
Чего то я разозлился, чуток
Курю на балконе, смотрю уазик подъехал к подстанции, я на комп
посмотрел и подумал пора его вырубить на всякий, тут бум свет потух, а
из подстанции чел выходит, гад, ааааааааааа
Pashenko:
че за чушь?