У меня есть каталог с тысячами папок, в которых есть подпапки, названные определенным образом (целевой каталог). У меня есть другой каталог с папками, в которых есть файлы (целевой каталог). Имена папок в целевом каталоге присутствуют в некоторых именах папок в целевом каталоге. Другими словами, имена папок в целевом каталоге являются подстрокой строки. Я хочу переместить файлы из папок в целевом каталоге в подпапку каждой папки в целевом каталоге, если папка содержит подстроку. Структура папок в целевом каталоге выглядит примерно так:
D:\Folder Test\54830_Mouse1_Mato_Opera\54830_Mouse1_Mato_Opera
D:\Folder Test\55568_Mouse1_Doctore_Opera\55568_Mouse1_Doctore_Opera_sub
D:\Folder Test\56987_Mouse_Opera\56987_Mouse_Opera_sub
D:\Folder Test\58936_Mouse1_sulifue_Opera\58936_Mouse1_sulifue_Opera_sub
D:\Folder Test\63102_Mouse_Theater\63102_Mouse_Theater_sub
Структура папок и файлов в целевом каталоге выглядит примерно так:
D:\Folder Test2\Mouse1_Mato\Blimp.bmp
D:\Folder Test2\Mouse1_sulifue\Blomp.bmp
D:\Folder Test2\Mouse2\Blamp.bmp
D:\Folder Test2\Mouse3\Blemp.bmp
Так, например, я бы хотелпереместить файл D:\Folder Test2\Mouse1_sulifue\Blomp.bmp
в D:\Folder Test\58936_Mouse1_sulifue_Opera\58936_Mouse1_sulifue_Opera_sub
на основе того факта, что Mouse1_sulifue
присутствует в обоих foldernames.
Чтобы не приходилось перемещать файлы из одной папки в другую вручную, я хочусоздать командный файл, который будет делать это для меня в командной строке.
Мой псевдокод будет выглядеть так:
#local is D:\Folder Test2
setlocal
for /f "usebackq tokens=*" %%a in (`dir /b /a:d`) do (
for /f "tokens=*" %%G in ('dir /b /s /a:d "D:\Folder Test\*"')(
if [[ $%%G =~ %%a ]]
then robocopy D:\Folders Test2\%%a D:\Folders Test\%%G\* /e
/copyall
fi
)
)
endlocal
Я прошу прощения, если код не имеет смысла, так как я абсолютно новичок в командной строке. Я придумал это после некоторого поиска в Google, но это, очевидно, не работает.
Заранее спасибо.