Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Переименовать массив файлов Добавлено: 01.03.06 10:33  

Автор вопроса:  [root] | Web-сайт: bit.pirit.info

Есть папка с файлами (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
Автор ответа:
 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-сайт: bit.pirit.info
 Профиль | | #5
Добавлено: 01.03.06 15:16
LamerOnLine:
            Объект не поддерживает это свойство или метод(438)
            на строчке:
            
For Each sFile In FSO.GetFolder(";D:\2";)

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
Private Sub Command1_Click()
Dim DelSimv As Integer 'Количество символов в начале имени файла
                        'которые нужно удалить
With File1
    .Path = "Путь к папке"
    .Pattern = ".mp3"
    For a = 0 To .ListCount - 1
        FileCopy .Path & "\" & .List(a), .Path & "\" & Right(.List(a), Len(.List(a)) - DelSimv) ' Переименовывает
        Kill .Path & "\" & .List(a) 'Удаляет старый
    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-сайт: bit.pirit.info
 Профиль | | #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 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
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #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-сайт: bit.pirit.info
 Профиль | | #15
Добавлено: 01.03.06 16:38
LamerOnLine: какие мы юмористы

Млин у меня за полчаса 2 раза свет отрубили, причем я еще успел за
сигаретами сбегать!
А насчет лам, знаю мало, а лам это то по мойму ты по определению!;-)
Я смотрю последнее время на форуме весеннее эмоциональное обострение,
и все до жути умные и готовы убить друг друга на пустом месте!
На счет твоего способа я все понял, я имел ввиду у FSO есть различные
методы работы с папками, файлами, почему нет rename?
Короче забей
Чего то я разозлился, чуток
Курю на балконе, смотрю уазик подъехал к подстанции, я на комп
посмотрел и подумал пора его вырубить на всякий, тут бум свет потух, а
из подстанции чел выходит, гад, ааааааааааа

Pashenko:
че за чушь?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам