Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания)

Ответить
Настройки темы
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания)

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите программку (или скрипт какой-то), которая может определить дату создания файла и судя по ней переместить файл в папку с названием "Дата создания файла".

Например:
файл1.jpg - дата создания 3.05.2007

Нужно создать папку 03.05.2007 (или 2007.05.03) и скопировать туда "файл1.jpg".

Пробовал искать по Инету - честно слово, ничего не нашел. А согласитесь, такая программа полезная. У меня фотки с камеры (Canon) когда сливаются на комп сразу по папкам сортируются. А вот на мобильном все файлы в одну папку скидываются и когда на комп перекинешь - то такой бардак

Может тут есть программисты, для которых это не тяжело сделать А то я только очень начинающий.

Отправлено: 22:10, 28-06-2007

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Boomer_777:
Только вот имена файлов до разделителя "-" имеют от 1 до 6 символов, »
Пробелов в числе этих символов нет? Попробуйте так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
	pushd "%sSourceFolder%" && (
		for %%i in ("*.jpg") do (
			set sFullName=%%~nxi
			for /f %%j in ("!sFullName:-= !") do set sPartName=%%j
			
			if not exist "!sPartName!" md "!sPartName!"
			
			>nul move "%%~i" "!sPartName!\" && echo Move file [%%~i] into folder [!sPartName!].
		)
		popd
	) || (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0

Исходная папка задаётся параметром пакетного файла (также можно просто перетащить папку на пакетный файл в Проводнике).
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:21, 04-06-2015 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, спасибо, то, что доктор прописал прямо

Отправлено: 00:59, 05-06-2015 | #22


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток!
У меня проблема именно такого же вида:
Цитата cifrovichek:
Есть папка с большим кол-вом файлов вида:
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.
Аналогично со следующей группой файлов. »
отличие только в том, что до разделителя 3 символа ( например 020_1234) и в том, что мне обязательно нужно выполнить эту операцию (создать папки и переместить файлы) в vbs.

как "выдрать" три символа из имени файла я уже понял:
Функция разбора строки в именах файлов

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

а дальше как ?

Отправлено: 17:05, 19-09-2015 | #23


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата belgarion:
отличие только в том, что до разделителя 3 символа ( например 020_1234) »
Так на что мы ориентируемся — на количество символов или же на разделитель? Как поступаем в случае наличия в целевой папке одноимённого файла?

Вот примерная болванка кода (ориентируемся на разделитель «_», в случае наличия одноимённого файла будет возникать ошибка):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFile

Dim strDestFolder


If WScript.Arguments.Count = 1 Then
	With WScript.CreateObject("Scripting.FileSystemObject")
		strSourceFolder = .GetAbsolutePathName(WScript.Arguments.Item(0))
		
		If .FolderExists(strSourceFolder) Then
			For Each objFile In .GetFolder(strSourceFolder).Files
				strDestFolder = .BuildPath(strSourceFolder, Split(objFile.Name, "_")(0))
				
				If Not .FolderExists(strDestFolder) Then
					.CreateFolder strDestFolder
				End If
				
				WScript.Echo objFile.Name, "--->", strDestFolder
				
				objFile.Move strDestFolder & "\"
			Next
		Else
			WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
			WScript.Quit 2
		End If
	End With
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>"
	WScript.Quit 1
End If

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:07, 19-09-2015 | #24


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Так на что мы ориентируемся »
Спасибо за помощь! Ваша "болванка" вполне годится. Только вопрос есть , как сделать чтоб папка в которой ищем файлы и создаем подпапки была уже задана в скрипте.

Отправлено: 11:56, 20-09-2015 | #25


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


belgarion, исходная папка задаётся аргументом скрипта. Также можно просто перетаскивать папку на скрипт в Проводнике.

Если совсем-совсем не хотите, то:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFile

Dim strDestFolder


With WScript.CreateObject("Scripting.FileSystemObject")
	strSourceFolder = .GetAbsolutePathName("C:\Мои проекты\16")
	
	If .FolderExists(strSourceFolder) Then
		For Each objFile In .GetFolder(strSourceFolder).Files
			strDestFolder = .BuildPath(strSourceFolder, Split(objFile.Name, "_")(0))
			
			If Not .FolderExists(strDestFolder) Then
				.CreateFolder strDestFolder
			End If
			
			WScript.Echo objFile.Name, "--->", strDestFolder
			
			objFile.Move strDestFolder & "\"
		Next
	Else
		WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
		WScript.Quit 2
	End If
End With

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:40, 20-09-2015 | #26


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Если совсем-совсем не хотите, то: »
Спасибо выручили!

Отправлено: 19:17, 20-09-2015 | #27


Новый участник


Сообщения: 2
Благодарности: 1

Профиль | Отправить PM | Цитировать


подскажите как изменить скрипт для сортировки фотографий по дате съемки из EXIF данных. когда скидываю с фотика в дате создания прописывается дата копирования, а не дата съёмки.

Отправлено: 15:19, 23-01-2016 | #28


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Nekis:
когда скидываю с фотика в дате создания прописывается дата копирования, а не дата съёмки. »
Естественно.

Цитата Nekis:
как изменить скрипт для сортировки фотографий по дате съемки из EXIF данных »
Никак. Если Вы хотите заменить дату создания на дату съёмки из EXIF — просто воспользуйтесь BulkFileChanger: Change date/time/attributes of multiple files.

Отправлено: 16:34, 23-01-2016 | #29


Новый участник


Сообщения: 2
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо.
выкрутился так:
1. через хорошую программу, которую использую вместо стандартного вивера для просмотра файлов - XnView (инструменты->изменить дату/время), заменил дату создания и изменения на дату съёмки из метаданных EXIF
2. потом воспользовался вашим скриптом
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:56, 23-01-2016 | #30



Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Защита папок и файлов паролем - ограничение доступа к файлам и папкам WChek Программное обеспечение Windows 18 22-09-2010 13:31
CMD/BAT - [решено] Копирование самого позднего по дате создания каталога. SANIOK_AV Скриптовые языки администрирования Windows 2 04-12-2009 17:29
VBS/WSH/JS - [решено] VBS/WSH. Сортировка файлов по дате. rancid Скриптовые языки администрирования Windows 3 23-07-2009 06:38
Доступ - [решено] Копирование файлов из XP в Vista cleverkid Microsoft Windows Vista 2 01-11-2008 11:19
[решено] Копирование файлов при загрузке ОС Coutty Microsoft Windows 2000/XP 9 02-05-2007 19:25




 
Переход