Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL, YURIY  
Поиск и перемещение файлов
Woha28Дата: Вт, 24 Апреля 2012, 15:57 | Сообщение # 1
Участник
Доброго время суток!
Люди помогите!
Дело в том что очень часто качаю себе музыку (дискографию) какой нибудь группы к примеру как сейчас
скачал папку со всеми альбомами (Black Eyed Peas 1998-2011) и там очень много папок и подпапок с mp3
файлами. А мне не нужно чтобы каждый альбом был в отдельной папке, и приходится каждый раз перемещать вручную из каждой папке в одну общую.
Вот я и решил написать прогу в которой просто нужно выбрать исходную папку (в данном случае Black Eyed Peas 1998-2011) и переместить из подпапок все mp3 в корневую.
я попробовал такой код:


но команда

Code
FileList "[Folder]\*.mp3" "Files+Folders" "[Music]"

в данном случае не подходит, как я понял она ищет только в конкретно выбраной папке не косаясь подпапок.
Подсакижите как быть!
За ранее благодарен!
Прикрепления: 4064960.png (67.4 Kb) · MoveMp3.zip (2.1 Kb)




Сообщение отредактировано
Woha28 - Вт, 24 Апреля 2012, 16:00
 
СообщениеДоброго время суток!
Люди помогите!
Дело в том что очень часто качаю себе музыку (дискографию) какой нибудь группы к примеру как сейчас
скачал папку со всеми альбомами (Black Eyed Peas 1998-2011) и там очень много папок и подпапок с mp3
файлами. А мне не нужно чтобы каждый альбом был в отдельной папке, и приходится каждый раз перемещать вручную из каждой папке в одну общую.
Вот я и решил написать прогу в которой просто нужно выбрать исходную папку (в данном случае Black Eyed Peas 1998-2011) и переместить из подпапок все mp3 в корневую.
я попробовал такой код:


но команда

Code
FileList "[Folder]\*.mp3" "Files+Folders" "[Music]"

в данном случае не подходит, как я понял она ищет только в конкретно выбраной папке не косаясь подпапок.
Подсакижите как быть!
За ранее благодарен!

Автор - Woha28
Дата добавления - 24 Апреля 2012 в 15:57
mishemДата: Вт, 24 Апреля 2012, 16:08 | Сообщение # 2
Эксперт форума
Во первых, лучше так, без Else:

Code
FolderBox "Выбрать папку" "[Folder]"    
If "[Folder]" "<>" ""    
ListBoxDeleteItem "ListBox1" "all"    
......
Quote (Woha28)
она ищет только в конкретно выбраной папке не косаясь подпапок

Ты ж сам указал расширение которое нужно искать mp3. Нужно указать что бы искало все *.*, А после делать отсев по расширению. Если mp3, копировать Если без расширения, то это папка и нужно повторять поиск уже в этой папке. И опять повтор, если в подпапке есть еще папки. И т.д. Пока папки не закончаться.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.


Сообщение отредактировано
mishem - Вт, 24 Апреля 2012, 16:09
 
СообщениеВо первых, лучше так, без Else:

Code
FolderBox "Выбрать папку" "[Folder]"    
If "[Folder]" "<>" ""    
ListBoxDeleteItem "ListBox1" "all"    
......
Quote (Woha28)
она ищет только в конкретно выбраной папке не косаясь подпапок

Ты ж сам указал расширение которое нужно искать mp3. Нужно указать что бы искало все *.*, А после делать отсев по расширению. Если mp3, копировать Если без расширения, то это папка и нужно повторять поиск уже в этой папке. И опять повтор, если в подпапке есть еще папки. И т.д. Пока папки не закончаться.

Автор - mishem
Дата добавления - 24 Апреля 2012 в 16:08
Woha28Дата: Вт, 24 Апреля 2012, 16:28 | Сообщение # 3
Участник
Попробовал как ты подсказал получилось так:

Добавлено (24 Апреля 2012, 16:28)
---------------------------------------------
Это получается что нужно проводить такой поиск в каждой найденой папке?

Прикрепления: sshot-3.zip (68.8 Kb)




Сообщение отредактировано
Woha28 - Вт, 24 Апреля 2012, 16:27
 
СообщениеПопробовал как ты подсказал получилось так:

Добавлено (24 Апреля 2012, 16:28)
---------------------------------------------
Это получается что нужно проводить такой поиск в каждой найденой папке?


Автор - Woha28
Дата добавления - 24 Апреля 2012 в 16:28
mishemДата: Вт, 24 Апреля 2012, 16:32 | Сообщение # 4
Эксперт форума
Quote (Woha28)
Это получается что нужно проводить такой поиск в каждой найденой папке?

Quote (mishem)
И опять повтор, если в подпапке есть еще папки. И т.д. Пока папки не закончаться.

:)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Woha28)
Это получается что нужно проводить такой поиск в каждой найденой папке?

Quote (mishem)
И опять повтор, если в подпапке есть еще папки. И т.д. Пока папки не закончаться.

:)

Автор - mishem
Дата добавления - 24 Апреля 2012 в 16:32
DEMBELДата: Вт, 24 Апреля 2012, 16:36 | Сообщение # 5
Наш дизайнер
мне интересно а что получится и что тут можно сделать если будут файлы с одинаковыми названиями в разных альбомах?

Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениемне интересно а что получится и что тут можно сделать если будут файлы с одинаковыми названиями в разных альбомах?

Автор - DEMBEL
Дата добавления - 24 Апреля 2012 в 16:36
mishemДата: Вт, 24 Апреля 2012, 16:42 | Сообщение # 6
Эксперт форума
Заменяться наверно будут, или ошибку выдавать. Надо пробовать. :) Я тоже об этом подумал. Нужно проверку ставить. Плюс ко всему могут быть разного качества. Могут быть одинаковые, но с разными названиями. Обычно в альбомах они нумеруются. Отсюда 1файл и 5файл и 1_файл по содержимому могут быть одинаковы, по названию разные.

По этому оставил этот вопрос на усмотрение автора. Пусть сначала с этим разберется, а со следующим вопросом рано или поздно столкнется. Сам решит, хорошо. Нет, все равно сюда придет. Тогда и ответ будет актуален.
:)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеЗаменяться наверно будут, или ошибку выдавать. Надо пробовать. :) Я тоже об этом подумал. Нужно проверку ставить. Плюс ко всему могут быть разного качества. Могут быть одинаковые, но с разными названиями. Обычно в альбомах они нумеруются. Отсюда 1файл и 5файл и 1_файл по содержимому могут быть одинаковы, по названию разные.

По этому оставил этот вопрос на усмотрение автора. Пусть сначала с этим разберется, а со следующим вопросом рано или поздно столкнется. Сам решит, хорошо. Нет, все равно сюда придет. Тогда и ответ будет актуален.
:)

Автор - mishem
Дата добавления - 24 Апреля 2012 в 16:42
Woha28Дата: Вт, 24 Апреля 2012, 16:54 | Сообщение # 7
Участник
Принцип я понял, но если будет вот так:
то как оставить mp3, а в папках продолжить отсев.
причём ещё нужно будет узнать путь к каждой группе mp3.

Добавлено (24 Апреля 2012, 16:51)
---------------------------------------------

Quote (DEMBEL)
мне интересно а что получится и что тут можно сделать если будут файлы с одинаковыми названиями в разных альбомах?

Ты прав как правило так и есть, думал просто к названию добовлять цифру:
01 LP Version
01 LP Version_1

Добавлено (24 Апреля 2012, 16:54)
---------------------------------------------
Для начала разабраться бы с перемещеним в одну папку,
так как я потом всё равно прослушиваю все песни и оставляю только то что мне понравилось.

Прикрепления: sshot-5.zip (57.9 Kb)




Сообщение отредактировано
Woha28 - Вт, 24 Апреля 2012, 16:47
 
СообщениеПринцип я понял, но если будет вот так:
то как оставить mp3, а в папках продолжить отсев.
причём ещё нужно будет узнать путь к каждой группе mp3.

Добавлено (24 Апреля 2012, 16:51)
---------------------------------------------

Quote (DEMBEL)
мне интересно а что получится и что тут можно сделать если будут файлы с одинаковыми названиями в разных альбомах?

Ты прав как правило так и есть, думал просто к названию добовлять цифру:
01 LP Version
01 LP Version_1

Добавлено (24 Апреля 2012, 16:54)
---------------------------------------------
Для начала разабраться бы с перемещеним в одну папку,
так как я потом всё равно прослушиваю все песни и оставляю только то что мне понравилось.


Автор - Woha28
Дата добавления - 24 Апреля 2012 в 16:54
mishemДата: Вт, 24 Апреля 2012, 17:00 | Сообщение # 8
Эксперт форума
Quote (Woha28)
то как оставить mp3

Делай два списка. В одном файлы в другом папки. Или через переменные.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Woha28)
то как оставить mp3

Делай два списка. В одном файлы в другом папки. Или через переменные.

Автор - mishem
Дата добавления - 24 Апреля 2012 в 17:00
Woha28Дата: Вт, 24 Апреля 2012, 17:19 | Сообщение # 9
Участник
Чё то не могу уловить смысл,


 
СообщениеЧё то не могу уловить смысл,

Автор - Woha28
Дата добавления - 24 Апреля 2012 в 17:19
mishemДата: Вт, 24 Апреля 2012, 18:13 | Сообщение # 10
Эксперт форума
[Music] у тебя находится в ListBox1?

Добавлено (24 Апреля 2012, 18:13)
---------------------------------------------
Что то примерно так. Не проверял. Ошибки точно должгны быть. Надо доработать. Но смысл думаю поймешь.

Code
FolderBox "Выбрать папку" "[Folder]"
If "[Folder]" "<>" ""
ListBoxDeleteItem "ListBox1" "all"
FileList "[Folder]\*.*" "Files+Folders" "[Music]"
:Povtor
ListBoxSize "ListBox1" "[kol]"
If "[kol]" "<>" "0"
ListBoxGetItem "ListBox1" "1" "[Mus]"
ExtractFileExt "[Mus[i]]" "[Rash]"
If "[Rash]" "=" ".mp3"
Скопировать файл в папку
Else
ListBoxAddItem "ListBox2" "0" "[Mus[i]]"
EndIf
ListBoxDeleteItem "ListBox1" "1"
GotoLine ":Povtor"
Else
ListBoxSize "ListBox2" "[kol]"
If "[kol]" "<>" "0"
ListBoxGetItem "ListBox2" "1" "[Papkа]"
FileList "[Folder]\[Papkа]\*.*" "Files+Folders" "[Music]"
ListBoxDeleteItem "ListBox2" "1"
GotoLine ":Povtor"
EndIf
EndIf


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение[Music] у тебя находится в ListBox1?

Добавлено (24 Апреля 2012, 18:13)
---------------------------------------------
Что то примерно так. Не проверял. Ошибки точно должгны быть. Надо доработать. Но смысл думаю поймешь.

Code
FolderBox "Выбрать папку" "[Folder]"
If "[Folder]" "<>" ""
ListBoxDeleteItem "ListBox1" "all"
FileList "[Folder]\*.*" "Files+Folders" "[Music]"
:Povtor
ListBoxSize "ListBox1" "[kol]"
If "[kol]" "<>" "0"
ListBoxGetItem "ListBox1" "1" "[Mus]"
ExtractFileExt "[Mus[i]]" "[Rash]"
If "[Rash]" "=" ".mp3"
Скопировать файл в папку
Else
ListBoxAddItem "ListBox2" "0" "[Mus[i]]"
EndIf
ListBoxDeleteItem "ListBox1" "1"
GotoLine ":Povtor"
Else
ListBoxSize "ListBox2" "[kol]"
If "[kol]" "<>" "0"
ListBoxGetItem "ListBox2" "1" "[Papkа]"
FileList "[Folder]\[Papkа]\*.*" "Files+Folders" "[Music]"
ListBoxDeleteItem "ListBox2" "1"
GotoLine ":Povtor"
EndIf
EndIf

Автор - mishem
Дата добавления - 24 Апреля 2012 в 18:13
СергейДата: Вт, 24 Апреля 2012, 19:49 | Сообщение # 11
Необукер
А если использовать плагин zmFunctions?!
Там есть функция поиска по расширению....
Попробую объяснить суть:
Примерно так (если я правильно понял вопрос):
ищем музыку...
Code
zmFindFiles "*.mp3" "D:\медиа\download" "Async+SubFolders" "" "[result]" "Find"

Допустим результат будет таким:

Меняем пути...
Code
ListBoxSize "result_find" "[count]"
    Loop "1" "[count]" "[i]"
    ListBoxGetItem "result_find" "[i]" "[tmp]"
    StrReplace "[tmp]" "медиа\download" "медиа" "[tmp]" ""
    ListBoxAddItem "out" "[i]" "[tmp]"
EndLoop

в листбоксе "out" будут измененые пути, готовые для копирования
небольшой пример
Вроде работает, но лучше протестить на парочке папок, выстави расширение мп3
пытался сделать копирование папки целиком, но чет не получилось.
Если пригодится, доработаешь напильником под себя...
Прикрепления: find_mp3.rar (3.9 Kb)


Сообщение отредактировано
Сергей - Ср, 25 Апреля 2012, 01:54
 
СообщениеА если использовать плагин zmFunctions?!
Там есть функция поиска по расширению....
Попробую объяснить суть:
Примерно так (если я правильно понял вопрос):
ищем музыку...
Code
zmFindFiles "*.mp3" "D:\медиа\download" "Async+SubFolders" "" "[result]" "Find"

Допустим результат будет таким:

Меняем пути...
Code
ListBoxSize "result_find" "[count]"
    Loop "1" "[count]" "[i]"
    ListBoxGetItem "result_find" "[i]" "[tmp]"
    StrReplace "[tmp]" "медиа\download" "медиа" "[tmp]" ""
    ListBoxAddItem "out" "[i]" "[tmp]"
EndLoop

в листбоксе "out" будут измененые пути, готовые для копирования
небольшой пример
Вроде работает, но лучше протестить на парочке папок, выстави расширение мп3
пытался сделать копирование папки целиком, но чет не получилось.
Если пригодится, доработаешь напильником под себя...

Автор - Сергей
Дата добавления - 24 Апреля 2012 в 19:49
Woha28Дата: Ср, 25 Апреля 2012, 14:07 | Сообщение # 12
Участник
Благодарю всех за помощь.
Вроде всё получилось, с помощью команды zmFindFiles находит все файлы, но при копировании
почему-то выдаёт ошибку (#123)

В чем дело не могу понять. Посмотрите может я туплю.
Прикрепления: 6408751.zip (2.1 Kb)


 
СообщениеБлагодарю всех за помощь.
Вроде всё получилось, с помощью команды zmFindFiles находит все файлы, но при копировании
почему-то выдаёт ошибку (#123)

В чем дело не могу понять. Посмотрите может я туплю.

Автор - Woha28
Дата добавления - 25 Апреля 2012 в 14:07
DEMBELДата: Ср, 25 Апреля 2012, 15:33 | Сообщение # 13
Наш дизайнер
короче к чему там все эти замуты не пойму. выдача zmFindFiles уже организована для отображения в списке, зачем парсить и вставлять вручную?
файлы копируются с вставлением в имя файла названия папки (альбома) где они лежали.

Добавлено (25 Апреля 2012, 15:33)
---------------------------------------------
процесс можно оптимизировать еще и так (все равно строку парсим):
Code
Loop "1" "[FSize]" "[i]"
ListBoxGetItem "ListBox1" "[i]" "[FName]"
.ExtractFileName "[FName]" "[FName2]"
.ExtractFilePath "[FName]" "[FFolder]"
StrParse "[FName]" "\" "[Album]" "[x]"
Setvar "[y]" "[x]-1"
FileCopy "[FName]" "[Folder2]\[Album[y]]_[Album[x]]"
EndLoop
Прикрепления: FileSearchCopy.zip (2.2 Kb)


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениекороче к чему там все эти замуты не пойму. выдача zmFindFiles уже организована для отображения в списке, зачем парсить и вставлять вручную?
файлы копируются с вставлением в имя файла названия папки (альбома) где они лежали.

Добавлено (25 Апреля 2012, 15:33)
---------------------------------------------
процесс можно оптимизировать еще и так (все равно строку парсим):
Code
Loop "1" "[FSize]" "[i]"
ListBoxGetItem "ListBox1" "[i]" "[FName]"
.ExtractFileName "[FName]" "[FName2]"
.ExtractFilePath "[FName]" "[FFolder]"
StrParse "[FName]" "\" "[Album]" "[x]"
Setvar "[y]" "[x]-1"
FileCopy "[FName]" "[Folder2]\[Album[y]]_[Album[x]]"
EndLoop

Автор - DEMBEL
Дата добавления - 25 Апреля 2012 в 15:33
Woha28Дата: Ср, 25 Апреля 2012, 15:53 | Сообщение # 14
Участник
Спасибо огромное! Теперь все работает как надо.



Сообщение отредактировано
Woha28 - Ср, 25 Апреля 2012, 15:53
 
СообщениеСпасибо огромное! Теперь все работает как надо.

Автор - Woha28
Дата добавления - 25 Апреля 2012 в 15:53
  • Страница 1 из 1
  • 1
Поиск: