Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 17.05.2013
Сообщений: 23

Реализация "грамотного" переименования

12.06.2013, 10:53. Показов 855. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Нужна помощь, а именно "Как можно реализовать посредством программы "грамотное" переименование файлов?". То есть у меня есть папка с файлами формата .nfx, нужно чтобы одной кнопкой эти файлы переименовать в формат .mp3 не теряя оригинального названия файла.
Если не сложно, подскажите пожалуйста.
Пример:
Chat.nfx => Chat.mp3
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2013, 10:53
Ответы с готовыми решениями:

Ищу грамотного программиста
Ищу грамотного программиста, который знаком с GUI программированием на работу. Оплата за написания несложных программ. Примерно...

Где найти грамотного преподавателя по программированию
Добрый день, подскажите где можно научиться прораммированию с обучением тет-а-тет?

Ищем грамотного и талантливого Ведущего программиста (Москва)
Ищем грамотного и талантливого Ведущего программиста в новый российско-американский интересный и перспективный стартап в области социальных...

13
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
12.06.2013, 11:48
Может так и не очень "грамотно", но работает (если что - поправят)
Visual Basic
1
2
3
4
5
FN = Dir("*.*"):
While FN <> "":
Name FN As Left(FN, InStr(FN, ".")) & "mp3"
FN = Dir:
Wend:
(В папке не должно быть других файлов - ВСЕ переименует !!)

Добавлено через 6 минут
Да, и не забудь СНАЧАЛА перейти в ЭТУ папку ))
1
2 / 2 / 0
Регистрация: 17.05.2013
Сообщений: 23
12.06.2013, 13:05  [ТС]
Не работает! При действии пишет типа "Такой файл уже существует!", вроде ошибка 53.
Прикол в том, что файлы не переименовывает, а вот программу переводит либо в mp3, либо в nfx формат.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
12.06.2013, 14:48
Цитата Сообщение от neustrikez Посмотреть сообщение
"Как можно реализовать посредством программы "грамотное" переименование файлов?"
Можете заюзать FSO(FileSystemObjects)
1
2 / 2 / 0
Регистрация: 17.05.2013
Сообщений: 23
12.06.2013, 15:45  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Можете заюзать FSO(FileSystemObjects)
Я в программировании "дуб дубом", поэтому не могли ли Вы подсказать как-что сделать?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.06.2013, 20:59
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Так:
Visual Basic
1
2
3
4
5
sub command1_Click()
  'здесь задается папка, например folder="c:\temp" (сейчас app.path - это папка с EXE-шником)
  dim folder: folder = app.path
  Shell "cmd /c ""ren """ & folder & "\*.nfx"" ""*.mp3""", 0
end sub
Или так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
sub command1_Click()
  'здесь задается папка, например folder="c:\temp" (сейчас app.path - это папка с EXE-шником)
  dim folder: folder = app.path
  on error resume next
  FN = Dir(folder & "\*.nfx")
  do While FN <> ""
    Name FN As Left(FN, InStrrev(FN, ".")) & "mp3"
    FN = Dir()
  loop
end sub
Добавлено через 31 минуту
Или так:

FSO(FileSystemObjects)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Option Explicit
 
Dim oFSO, Root, myfiles, fil, myFolders, fold
 
Sub command1()
    on error resume next
    'здесь задается папка, например folder="c:\temp" (сейчас app.path - это папка с EXE-шником)
    Dim folder: folder = "E:\Bash"
 
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set Root = oFSO.GetFolder(folder)
    
    scanFolder Root
 
End Sub
 
Function scanFolder(fold)
    on error resume next
    Dim newFN
 
    Set myfiles = fold.Files
 
    For Each fil In myfiles
 
        If LCase(Right(fil.Name, 4)) = ".cmd" Then
 
            newFN = Left(fil.Name, InStrRev(fil.Name, ".")) & "bat"
            
            If Not (oFSO.fileExists(fold.Path & "\" & newFN)) Then
 
                fil.Name = newFN
            
            End If
 
        End If
 
    Next
 
    Set fil = Nothing
    Set myfiles = Nothing
 
    Set myFolders = fold.Subfolders
 
    'Раскомментируйте, если требуется переименовать в подкаталогах тоже
    'dim subf
    'For Each subf In myFolders
    '    scanFolder subf
    'Next
    'set subf = nothing
 
    Set myFolders = Nothing
 
End Function


Добавлено через 4 минуты
P.S. Всем - можете объяснить, почему, когда я вызываю функцию так:
Visual Basic
1
scanFolder Root
то в нее передается объект (Folder),
а если так:
Visual Basic
1
scanFolder (Root)
то в функции получаем тип String, который содержит значение свойства path объекта Root (Folder).
1
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
12.06.2013, 21:17
Цитата Сообщение от Dragokas Посмотреть сообщение
почему
Интересный вопрос!
Visual Basic
1
Function scanFolder(fold)
берет параметр fold по ссылке, но если при вызове мы заключили его в скобки (или ещё чего-нибудь с ним сделали, например прибавили 0 или ""), то передано будет по значению свойство по умолчанию. Кажется так
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.06.2013, 21:32

Не по теме:

Я с этим минут 10 сидел. 2 одинаковых на вид модуля (один работает, другой нет). Не мог найти различия.



а вот так передает как объект:
Visual Basic
1
ret = scanFolder(fold)
0
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
12.06.2013, 21:41
и
Visual Basic
1
call scanFolder(fold)
тоже как объект?
Ничего странного. Синтаксис VB требует в данных случаях наличия скобок.
Попробуйте их (скобки) удвоить, и опять получите по значению...
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.06.2013, 21:44
Цитата Сообщение от Апострофф Посмотреть сообщение
Попробуйте их (скобки) удвоить
Жесть. Инверсия какая-то. )))

Цитата Сообщение от Апострофф Посмотреть сообщение
тоже как объект?
Да, через call нормально, как объект.
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
12.06.2013, 22:13
(пока не разошлись все) А почему и
Visual Basic
1
InStr("12345.7", ".")=6
и
Visual Basic
1
InStrRev("12345.7", ".")=6
???? Что, Rev упразднили ??
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.06.2013, 22:21
Цитата Сообщение от morgann55 Посмотреть сообщение
???? Что, Rev упразднили ??
Ну точка как и была на шестой позиции так и осталась. Если добавить еще точку тогда результат будет различаться
1
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
12.06.2013, 22:26
The trick, Спасибо!! Тупанул маленько - ведь Rev не считает с конца, а находит ПОСЛЕДНИЙ случай...
0
2 / 2 / 0
Регистрация: 17.05.2013
Сообщений: 23
13.06.2013, 04:27  [ТС]
Dragokas, спасибо вам, всё работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2013, 04:27
Помогаю со студенческими работами здесь

Ищу грамотного программера, для написания авторегистратора
Skype: Shoorpin

Нужен совет для грамотного решения по организации 1С
Есть торговая организация. Три торговых точки. Первая точка - три рабочих места с УТ, одно с БП. Вторая, третья точки - по одному...

Для серьезного проекта нужна консультация грамотного человека
Уважаемые СЕО-Оптимизаторы! Во-первых, хотел бы поблагодарить модераторов за форум. Много интересных советов, которыми я уже...

Ищу работу для грамотного верстальщика сайтов с небольшим опытом
Всем привет. Ищу работу для грамотного верстальщика сайтов с небольшим опытом Осваивал азы верстки несколько лет. Читал книги, юзал...

Как создать массив объектов для удобного и грамотного доступа
Как создать массив объектов? Допустим есть кнопки Button1, Button2, Button3. и пример такой: Button1.Visible = False ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru