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

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

Ответить
Настройки темы
CMD/BAT - [решено] Скопировать файлы-сателлиты из папки в папку

Пользователь


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

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


Здравствуйте, помогите пожалуйста решить следующую проблему. Я качаю картинки из интернета при помощи скрипта. Вместе с картинками скачиваются файлы с дополнительной информацией (сателлиты). Выглядит это так:
Код: Выделить весь код
E:\IMG\Instaloader\#motionmood	
	2018-01-20_12-53-08_arunaathi_gy.jpg
	2018-01-20_12-53-08_arunaathi_gy.json
	2018-01-20_12-53-08_arunaathi_gy.txt
	2018-01-22_14-10-45_danny_p3d.jpg
	2018-01-22_14-10-45_danny_p3d.json
	2018-01-22_14-10-45_danny_p3d.txt
E:\IMG\Instaloader\#howiseedatworld
	2018-01-22_14-56-19_hereisadam.jpg
	2018-01-22_14-56-19_hereisadam.json
	2018-01-22_14-56-19_hereisadam.txt
Далее я просматриваю изображения и понравившиеся копирую в папку E:\IMG\Good
(только изображение. Без дополнительных файлов. E:\IMG\Good\2018-01-20_12-53-08_arunaathi_gy.jpg)
Хотелось бы написать такой скрипт который обозревал бы папку E:\IMG\Good
И найдя там файл *.жпг искал бы в папках E:\IMG\Instaloader\* файлы сателлиты и копировал бы всё вместе. Допустим в E:\IMG\финал
В идеале в подпапку с тем же именем как и оригинал. То есть:
Код: Выделить весь код
E:\IMG\финал\#motionmood\
	2018-01-20_12-53-08_arunaathi_gy.jpg
	2018-01-20_12-53-08_arunaathi_gy.json
	2018-01-20_12-53-08_arunaathi_gy.txt
Как это можно осуществить? А то я даже не знаю с чего начать.
Заранее спасибо.

Отправлено: 12:55, 27-01-2018

 

Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off

Set "GoodFile=Z:\IMG\Good\*.jpg"
Set "AllDirs=Z:\IMG\Instaloader"

FOR /F "usebackq delims=" %%a IN (`Dir "%GoodFile%" /B /A:-D /S 2^>nul`) DO (
	FOR /F "usebackq delims=" %%b IN (`Dir "%AllDirs%\%%~na.*" /B /A:-D /S 2^>nul`) DO (
		XCopy /D /Y "%%b" "%%~dpa" >nul
	)
)
Поправьте пути
Заранее пожалуйста.

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


Последний раз редактировалось megaloman, 27-01-2018 в 14:22.

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

Отправлено: 14:08, 27-01-2018 | #2



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

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


Пользователь


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

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


Суперкруто! Работает как часы. Спасибо большое.
Скажите пожалуйста, а есть ли способ извлечь из пути
Код: Выделить весь код
IMG\Instaloader\#motionmood
только имя папки
Код: Выделить весь код
#motionmood
Это бы сделало всё ещё круче.

Отправлено: 05:00, 29-01-2018 | #3


Пользователь


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

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


Картинки лежат в папках отсортированные по тегам. #ёж, #лиса, #сова. Когда скрипт копирует сателлиты он копирует их в общую папку
Код: Выделить весь код
Z:\IMG\InstaloaderBest
В результате ежи, лисы, совы лежат вперемешку
А хотелось бы что бы скрипт копировал в папку InstaloaderBest в подпапку с именем подпапки где находились сателлиты.
То есть он нашел сателлит в папке
Код: Выделить весь код
Z:\IMG\Instaloader\#ёж
и скопировал в
Код: Выделить весь код
Z:\IMG\InstaloaderBest\#ёж
Пока я решил проблему так:
Код: Выделить весь код
Set "FinalDir=E:\IMG\#InstaloaderBest"
XCopy /D /Y "%%b" "%FinalDir%%%~pb" >nul
Но это лишние, абсолютно бесполезные папки
Код: Выделить весь код
E:\IMG\#InstaloaderBest\IMG\Instaloader\#ёж
Очень желательно так
Код: Выделить весь код
E:\IMG\InstaloaderBest\#ёж
Спасибо вам за помощь.

Отправлено: 09:58, 29-01-2018 | #4


Ветеран


Contributor


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

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


Patroklos, ничего не понял!
Цитата Patroklos:
Далее я просматриваю изображения и понравившиеся копирую в папку E:\IMG\Good »
Вы копируете понравившиеся изображения кучей в одну папку или по подпапкам #ёж, #лиса, #сова? И что хотите получить? Имхо, если кучей, то я бы предложил алгоритм: просматриваем в корне E:\IMG\Good жпг-файлы, ищем их в подпапках #ёж, #лиса, #сова итд папки E:\IMG\Instaloader, при обнаружении его в подпапке, например, #ёж, перемещаю его из корня E:\IMG\Good в Е:\IMG\Good\#ёж, и туда же дописываю файлы-сателлиты. А вот если не найду, то перемещу жпг-файл в отдельную папку, например E:\IMG\Good\#zzzzzzzzzzz
Такой алгоритм избавит от повторных поисков для уже обработанных файлов, что существенно ускорит выполнение скрипта.
Код: Выделить весь код
@Echo Off

Set "GoodDir=Z:\IMG\Good"
Set "MaskFile=*.jpg"

Set "AllDirs=Z:\IMG\Instaloader"
Set "MaskDir=#*.*"
Set "NotFound=#zzzzzzz"

FOR /F "usebackq delims=" %%a IN (`Dir "%GoodDir%\%MaskFile%" /B /A:-D 2^>nul`) DO Call :MoveCopy "%%a"
GoTo :Eof

:MoveCopy
	FOR /F "usebackq delims=" %%d IN (`Dir "%AllDirs%\%MaskDir%" /B /A:D /T:W /O:-D 2^>nul`) DO (
		If Exist "%AllDirs%\%%d\%~1" (
			Md "%GoodDir%\%%d" 2>nul
			Move /Y "%GoodDir%\%~1" "%GoodDir%\%%d\" >nul
			XCopy /D /Y "%AllDirs%\%%d\%~n1.*" "%GoodDir%\%%d\" >nul
			GoTo :Eof
		)
	)
	Md "%GoodDir%\%NotFound%" 2>nul
	Move /Y "%GoodDir%\%~1" "%GoodDir%\%NotFound%\" >nul
GoTo :Eof
Пути нарисуйте свои
И еще крамольный вопрос: а зачем иметь одни и те же файлы в двух местах? Может быть, их надо не копировать в Good, а перемещать?

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


Последний раз редактировалось megaloman, 29-01-2018 в 11:49.

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

Отправлено: 10:36, 29-01-2018 | #5


Пользователь


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

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


Я просматриваю картинки FSViewer. На картинках которые я желаю сохранить я нажимаю хоткей и картинка копируется из папки
Код: Выделить весь код
Z:\IMG\Instaloader\#*
в
Код: Выделить весь код
Z:\IMG\InstaloaderBest
Цитата megaloman:
я бы предложил алгоритм »
Спасибо. Это будет отличное решение.

PS: Пока я писал ответ вы уже дали решение. Спасибо. Сейчас буду пытаться понять что да как.

Идеально! Именно то что надо. Вам надо памятник поставить. Огромное спасибо.

Отправлено: 11:45, 29-01-2018 | #6


Пользователь


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

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


Цитата megaloman:
И еще крамольный вопрос: »
Скачивается много мусора. Я оставляю ценное для меня а потом всё ненужное удаляю.

Отправлено: 12:04, 29-01-2018 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как скопировать папку с файлами из одного места в другое? Pozia AutoIt 11 15-04-2015 12:57
Разное - [решено] Не перемешаются файлы с папки в папку micro8 Microsoft Windows 7 0 18-03-2013 21:09
CMD/BAT - Как скопировать файл/ы из CD/DVD в папку Program Files ??? meGangstaWorld Скриптовые языки администрирования Windows 7 13-03-2013 22:49
VBS/WSH/JS - [решено] Надо скопировать файлы из одной папки в другую, но только если их нет в третьей rromms Скриптовые языки администрирования Windows 3 11-09-2011 21:42
CMD/BAT - [решено] как скопировать файлы 1,2,3 в папки x,y,z соответственно shadowbat Скриптовые языки администрирования Windows 6 21-05-2010 13:07




 
Переход