Показать полную графическую версию : [решено] Скопировать файлы-сателлиты из папки в папку
Patroklos
27-01-2018, 12:55
Здравствуйте, помогите пожалуйста решить следующую проблему. Я качаю картинки из интернета при помощи скрипта. Вместе с картинками скачиваются файлы с дополнительной информацией (сателлиты). Выглядит это так:
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
Как это можно осуществить? А то я даже не знаю с чего начать.
Заранее спасибо.
megaloman
27-01-2018, 14:08
@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
)
)
Поправьте пути
Заранее пожалуйста.
Patroklos
29-01-2018, 05:00
Суперкруто! Работает как часы. Спасибо большое.
Скажите пожалуйста, а есть ли способ извлечь из пути IMG\Instaloader\#motionmood только имя папки #motionmood
Это бы сделало всё ещё круче.
Patroklos
29-01-2018, 09:58
Картинки лежат в папках отсортированные по тегам. #ёж, #лиса, #сова. Когда скрипт копирует сателлиты он копирует их в общую папку 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\#ёж
Спасибо вам за помощь.
megaloman
29-01-2018, 10:36
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, а перемещать?
Patroklos
29-01-2018, 11:45
Я просматриваю картинки FSViewer. На картинках которые я желаю сохранить я нажимаю хоткей и картинка копируется из папки
Z:\IMG\Instaloader\#*в
Z:\IMG\InstaloaderBest
я бы предложил алгоритм »
Спасибо. Это будет отличное решение.
PS: Пока я писал ответ вы уже дали решение. Спасибо. Сейчас буду пытаться понять что да как.
Идеально! Именно то что надо. Вам надо памятник поставить. Огромное спасибо.
Patroklos
29-01-2018, 12:04
И еще крамольный вопрос: »
Скачивается много мусора. Я оставляю ценное для меня а потом всё ненужное удаляю.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.