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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как перекидывать много файлов в нужные мне папки&

Ответить
Настройки темы
CMD/BAT - [решено] Как перекидывать много файлов в нужные мне папки&

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


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

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


Изображения
Тип файла: jpg Снимок.jpg
(409.1 Kb, 12 просмотров)
Вложения
Тип файла: txt скрипт.txt
(254 байт, 2 просмотров)
Здравствуйте! Помогите пожалуйста.
В папке находится около 4 тыс фото и нужно, что бы каждые 3 фотографии перекидывались в 1 папку.
Приложил скрин, там схематично указал что я имею ввиду. Возможно ли такое сделать каким либо способом?
У меня уже имеется скрипт который перекидывает 1 файл только в 1 папку. Как раз помогли на этом форуме. Возможно из него получится сделать перекидку по 3 фото в 1 папку? Приложил его так же файлом и текстом ниже.

@setlocal enabledelayedexpansion&chcp 1251>nul
@set "d=bla bla"

@for %%i in (*.*) do @(
>nul robocopy . "!d!!s!" "%%i" /mov /ndl /nfl /njh /njs /xf "%~nx0"
set/a c+=1&if !c! geq 2 (set "s= — копия (!c!)") else set "s= — копия"
)

Отправлено: 20:11, 04-07-2024

 

Ветеран


Contributor


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

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


Как-то так
Код: Выделить весь код
@Echo Off &Cls
	Set "BoxIn=Z:\Box_In"
	Set Mask="*.jpg"
	Set "BoxOut=Z:\Box_Out"
	Set /A n=3

	Pushd "%BoxIn%"||(Echo Folder "%BoxIn%\" not found &Pause &Exit /B 2)
	
	Set /A m=10000, i=0 
	For /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D /O:D %Mask%`) Do (
		Call :MyMove "%%f"
	)
Pause
Exit /B

:MyMove
	Set /A remain=%i%%%%n%
	If Not %remain% EQU 0 (>nul Move %1 "%Out%\" &Set /A i+=1 &Exit /B)
	Set /A m+=1
	Set "Out=%BoxOut%\%m:~1%" 
	Md "%Out%" &Set /A i+=1
	>nul Move %1 "%Out%\"
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 00:10, 05-07-2024 | #2



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

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


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


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

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


for_needlife@vk, Можно ещё так сделать.
Сортировка файлов в папке куда вы положите bat-ник.
Создаются папки с датой и временем.
Скрытый текст
Код: Выделить весь код
@echo off
setlocal EnableDelayedExpansion
set "source_folder=%~dp0"
set "script_name=%~nx0"

for %%A in ("%source_folder%*.*") do (
  if not "%%~nxA" == "!script_name!" (
    for /F "tokens=1,2,3 delims=/: " %%B in ("%%~tA") do (
      set "day=%%~tA"
      set "destination_folder=!source_folder!!day:~0,10!"
      mkdir "!destination_folder!"
      move "%%A" "!destination_folder!"
    )
  )
)

endlocal
pause


Либо вот так, включая вложенные папки:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal EnableDelayedExpansion
set "source_folder=%~dp0"
set "script_name=%~nx0"

for /R "%source_folder%" %%A in (*) do (
  if not "%%~nxA" == "!script_name!" (
    for /F "tokens=1,2,3 delims=/: " %%B in ("%%~tA") do (
      set "day=%%B-%%C-%%D"
      set "destination_folder=!source_folder!!day!"
      mkdir "!destination_folder!" >nul
      move "%%A" "!destination_folder!" >nul
    )
  )
)

endlocal
pause


Пример:
Скрытый текст

Последний раз редактировалось ivan456, 05-07-2024 в 01:43.

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

Отправлено: 01:07, 05-07-2024 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell
Код: Выделить весь код
$src = 'C:\temp\from\photo*.jpg'
$dest = 'C:\temp\to'

dir $src |group {$_.basename -replace '.*_'} |% {
    $f = "$dest\$($_.Name)"
    mkdir $f -ErrorAction SilentlyContinue > $null
    $_.group |mv -Destination $f
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 09:36, 05-07-2024 | #4


Ветеран


Contributor


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

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


ivan456, DJ Mogarych,
Цитата for_needlife@vk:
сделать перекидку по 3 фото в 1 папку? »
Вы решаете не ту задачу

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 12:28, 05-07-2024 | #5


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


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

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


megaloman,
Вы его фото то сами смотрели?))
Там на фото файлы в названиях которых дата и время. И нужно с одинаковыми рассортировать по папкам.
Просто выше bat файл делает это не по именам, а по дате создания файла, ну или можно сделать тоже самое по дате изменения.
Это тоже самое будет.
Можно ещё переписать немного и поставить условие, сортировать с такой то даты до такой.
А там он уже сам ручками может папки переименовать как ему угодно.

там время только подчеркнуто.
Выше мой скрипт как раз создает папки с временем, но без секунд. А ему и не нужны секунды, только что он писал по 3 файла ему нужно, а не все.
Может у него 10 снимков в одну минуту, и все они окажутся в одной папке.

Последний раз редактировалось ivan456, 05-07-2024 в 14:24.


Отправлено: 14:17, 05-07-2024 | #6


Ветеран


Contributor


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

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


ivan456, Не смею даже пытаться ограничивать Вашу свободу творчества, лишь бы в удовольствие, но про дату/время в задании ни гу-гу, нафантазировать можно всё что угодно, но еще раз: сделать перекидку по 3 фото в 1 папку.
Кстати, у меня сортируются от старых к новым, но при этом делается перемещение по заданному количеству файлов в папку. Будет пожелание по именам папок - буду решать проблемы по мере их поступления.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 14:26, 05-07-2024 | #7


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


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

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


megaloman, часто люди пишут одну, а хотят другое))
Я на фото смотрел, что он там подчеркнул исходя из фото и сделал скрипт, правда я так из спортивного интереса его сделал))
Самому что то захотелось что нибудь сортировать на компе))
правда не знаю зачем)

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

Я бы тоже так сделал. Например если стоит камера и каждую минуту делает по 3 фото и сохраняет всё в кучу. То логично потом тысячи фото отсортировать по минутам.

Последний раз редактировалось ivan456, 05-07-2024 в 15:15.


Отправлено: 14:31, 05-07-2024 | #8


Deadooshka


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

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


ему надо группировать по сериям снимков, сделанным во временнОм интервале в несколько секунд. На фото 0..1, а в реальности может и больше. Номер снимка до "@" не даёт гарантий правильности группировки, потому что камера может глючить и где-то серия не 3 снимка, а 2 к примеру. Группировка по минутам тоже. Конец предыдущей серии в начале минуты, а начало следующей в конце минуты, и получается в одной папке снимки из разных серий.

Отправлено: 19:31, 08-07-2024 | #9


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


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

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


Извиняюсь что мог запутать по поводу даты и время снимков. Действительно, большинство снимков лежат с рандомными датами и числами, поэтому сортировать по ним наверное будет не столь удобно, поэтому в тексте про это не указал, а когда делал зарисовку про это подумал и решил вдруг будет возможность сделать и по таком алгоритму.
В любом случае ваши представленные варианты работают прекрасно, спасибо!

Отправлено: 00:02, 10-07-2024 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как перекидывать много файлов в нужные мне папки&

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] назначить нужные права на папки в каталоге batyaPS Скриптовые языки администрирования Windows 25 14-09-2014 12:04
Установка - [решено] Обновления от Microsoft: нужные, не нужные. Польза или вред. flev45 Microsoft Windows 7 18 29-09-2010 13:05
[решено] Как вытянуть из диструбива windows xp нужные мне программы VALIK1994 Автоматическая установка Windows 2000/XP/2003 3 29-08-2009 01:44
Vista / 2008 - Как удалить не нужные мне приложения? njg Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 3 03-07-2009 15:44




 
Переход