![]() |
Сортирование файлов по папкам (копирование по дате создания)
Подскажите программку (или скрипт какой-то), которая может определить дату создания файла и судя по ней переместить файл в папку с названием "Дата создания файла".
Например: файл1.jpg - дата создания 3.05.2007 Нужно создать папку 03.05.2007 (или 2007.05.03) и скопировать туда "файл1.jpg". Пробовал искать по Инету - честно слово, ничего не нашел. А согласитесь, такая программа полезная. У меня фотки с камеры (Canon) когда сливаются на комп сразу по папкам сортируются. А вот на мобильном все файлы в одну папку скидываются и когда на комп перекинешь - то такой бардак Может тут есть программисты, для которых это не тяжело сделать :) А то я только очень начинающий. |
DIMM2005
Можно сделать vbs-скрипт примерно такого содержания: Код:
Dim FSO, FldN, Fls, Fl, DtN, FlN Формат вызова: DTMove.vbs Имя_папки P. S. С контролем ошибок не заморачивался, так что использовать аккуратно. |
Petya V4sechkin
Спасибо! Все работает, сортирует как надо. Вроде проверял, при разных условиях - все ок... Я как понял скрипт берет дату изменения файла, а не создания, что впринципе мне и нужно. (т.к. при копировании на комп, дата создания меняется, а дата изменения - нет). Вот только маленький недочет. Скрипт заменяет одинаковые файлы (если имя совпадает и папка назначения). Хотя содержимое файла может быть разным. Я понимаю, в реальной жизни, такое врятли получится, но..... Можно как-то доработать скрипт, что если при сортировании, файл с таким именем уже существует, то переместить его в папку, например "Непонятное". Чтобы я потом посмотрел и лично все досортировал. |
Petya V4sechkin
Благодарю! |
Vadikan
Не за что ;) DIMM2005 Цитата:
Код:
Dim FSO, FldN, Fls, Fl, D, DtN, FlN |
Спасибо! Лучше я бы и не мог придумать.
Petya V4sechkin Можешь толкать как комерческий продукт :) Ведь честно, в Инете ничего подобного не нашел. Только вот "фомат вызова: DTMove.vbs Имя_папки" не все могут понять :) Сегодня наверно тему в сети создам, многим этот скрипт понравится - авторство конечно за тобой :) Это я упомяну... |
DIMM2005
Цитата:
Цитата:
Конечно, лучше было бы сделать, чтобы при отсутствии параметра скрипт спрашивал путь к папке, но я об этом не подумал. |
Добрый день!
Подскажите как реализовать, сортировку файлов по папкам (по ВРЕМЕНИ создания, не по дате, т.е чтобы скрипт создавал новые папки по формату ЧЧ-ММ и туда сортировал файлы). |
Вопрос решен.
Может пригодится кому-нибудь.. Код:
|
Petya V4sechkin, обращаюсь к Вам за помощью.
Ситуация подобная той, которая описана ТС. Есть папка с большим кол-вом файлов вида: ffaa-1.jpg ffaa-2.jpg ffaa-3.jpg ggaa-1.jpg ggaa-2.jpg ggaa-3.jpg Нужно чтобы скрипт создал папку "ffaa" и запихнул в неё файлы ffaa-1.jpg, ffaa-2.jpg и ffaa-3.jpg. Аналогично со следующей группой файлов. Это реально ? |
cifrovichek, реально. Откройте командную строку и, перейдя в нужную папку, исполните следующий код:
Код:
for %i in ("E:\Песочница\0088\*.jpg") do @(set sName=%~nxi & (if not exist "!sName:~0,4!" md "!sName:~0,4!") & move "%i" "!sName:~0,4!\") Такие вещи проще и надёжнее делать полуавтоматически при помощи файловых менеджеров. |
Цитата:
Пишет "неверно задано имя папки. Синтаксическая ошибка в имени файла, имени папки или метке тома" В чём может быть проблема? |
cifrovichek, надеюсь, «E:\Песочница\0088\*.jpg» Вы поменяли на своё? Все файлы «*.jpg» действительно имеют четырёхсимвольную общую часть в именах?
|
Цитата:
Только что попробовал провести аналогичное действие, но вместо "4" в код поставил "7" - всё повторилось. |
cifrovichek, в папке «E:\Песочница\0088» я создал файлы:
Код:
000ffaa-1.jpg В командной строке, сделав текущим каталогом «E:\Песочница\0089», выполнил команду: Код:
for %i in ("E:\Песочница\0088\*.jpg") do @(set sName=%~nxi & (if not exist "!sName:~0,7!" md "!sName:~0,7!") & move "%i" "!sName:~0,7!\") А как делали Вы? |
Iska, и я делаю так же. Посмотрите пожалуйста скрины, может я чего-то не замечаю?
![]() ![]() ![]() |
cifrovichek, научитесь, пожалуйста, снимать копию текста с содержимого окна консоли. Желания вручную набирать текст по скриншоту мало. Я понимаю, что есть моменты, когда важен именно скриншот, но в данном случае это не так.
Я проверил — у меня на Ваших файлах и путях работает, как и заявлено. Есть предположение, что у нас с Вами разница в значении «enabledelayedexpansion» командного процессора. Я уже много лет меняю умолчальное значение… Попробуйте запустить командный процессор с параметром «/V:ON»: Код:
cmd.exe /v:on |
Iska, спасибо большое! Теперь всё получилось!
|
Цитата:
|
День добрый, у меня подобная проблемка, как описана выше:
Цитата:
|
Цитата:
Скрытый текст
Код:
@echo off Исходная папка задаётся параметром пакетного файла (также можно просто перетащить папку на пакетный файл в Проводнике). |
Iska, спасибо, то, что доктор прописал прямо :)
|
Доброго времени суток!
У меня проблема именно такого же вида: Цитата:
как "выдрать" три символа из имени файла я уже понял: Функция разбора строки в именах файлов
set objFS = CreateObject("Scripting.FileSystemObject") Set outputLines = CreateObject("System.Collections.ArrayList") FldN = "наша папка содержащая файлы для разбора имен" for each f in objFS.GetFolder(FldN).files outputLines.Add f.Name next outputLines.Sort() ' 5 lines... For Each outputLine in outputLines set file = objFS.GetFolder(FldN).files.item (outputLine&"") str = outputLine&"" intCharacters = 3 strNew = left(str, intCharacters) next Wscript.Quit а дальше как ? |
Цитата:
Вот примерная болванка кода (ориентируемся на разделитель «_», в случае наличия одноимённого файла будет возникать ошибка): Скрытый текст
Код:
Option Explicit |
Цитата:
|
belgarion, исходная папка задаётся аргументом скрипта. Также можно просто перетаскивать папку на скрипт в Проводнике.
Если совсем-совсем не хотите, то: Скрытый текст
Код:
Option Explicit |
Цитата:
|
подскажите как изменить скрипт для сортировки фотографий по дате съемки из EXIF данных. когда скидываю с фотика в дате создания прописывается дата копирования, а не дата съёмки.
|
Цитата:
Цитата:
|
Спасибо.
выкрутился так: 1. через хорошую программу, которую использую вместо стандартного вивера для просмотра файлов - XnView (инструменты->изменить дату/время), заменил дату создания и изменения на дату съёмки из метаданных EXIF 2. потом воспользовался вашим скриптом |
Цитата:
|
Цитата:
и второй вопрос: как в скрипт ниже прописать путь к конкретной папке над которой надо выполнить работу? Код:
Dim FSO, FldN, Fls, Fl, D, DtN, FlN |
Цитата:
|
Цитата:
|
NLOLegion, принцип тот же — просто перетаскивайте папку на скрипт/ярлык на скрипт в Проводнике. Это Вас устроит?
|
Iska, да так всё работает! Отлично работает! Но в скрипте хочется сделать, а не получается. Пытался ваш файл с доработкой и без путей сравнить и от туда взять, но нифига не вышло.
|
Удалите:
Код:
If WScript.Arguments.Count = 0 Then Код:
FldN = WScript.Arguments(0) Код:
FldN = "путь к конкретной папке над которой надо выполнить работу" |
Время: 11:48. |
Время: 11:48.
© OSzone.net 2001-