Войти

Показать полную графическую версию : Перенос файлов с одинаковой частью имени, в папки названные этой частью имени.


Shinkiro
25-08-2024, 16:11
Доброго дня, пробовал найти поиском решение но не вышло, в общем есть 10 000 картинок в папке, почти у в имени файла присутствует имя автора всегда начинается с by_, а заканчиваться может по разному или сразу тип файла или - или _ после которых набор произвольных символов, пробелов вроде не встречал.
Выгледят так:
Golden_Witch_by_burstchicken-32113892fa.jpg
Symphony_of_Destruction_by_dasAoD.jpg
planet_earth_by_microbot23-d3cfd0v.jpg
Feather_Dancer__line_art_by_wayoftheGoo.jpg
The_Homeworld_by_microbot23.jpg
For_the_record_by_wayoftheGoo.jpg
Night__Inventory_by_wayoftheGoo.jpg
Aphrodite_ix_by_wayoftheGoo.jpg
untitled_yellow_by_pitrih.png
kiss_study_1_by_wayoftheGoo_f77rklas.jpg
Night_Kiss_by_sketcher2007.jpg
do_not_breathe____by_Pockypuu.jpg
tribal_dragon_by_yigitkoroglu-d316rs4.jpg

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

DJ Mogarych
26-08-2024, 06:50
Powershell

$dir = 'c:\temp\pict'

cd $dir
dir -file |group {$_.basename -replace '.*_by_([a-zA-Z\d]+).*','$1'} |% {
mkdir $_.name -ErrorAction SilentlyContinue > $null
mv $_.group $_.name
}

megaloman
26-08-2024, 12:36
cmd@Echo Off &Cls &SetLocal EnableDelayedExpansion
Set "FileIn=Z:\Box_In\*_by_*.*"
Set "BoxOut=Z:\Box_In"
For %%f In ("%FileIn%") Do (
Set "Name=%%~nf"
For /F "delims=._-" %%d In ("!Name:*_by_=!") Do (2>nul Md "%BoxOut%\%%d" &>nul Move "%%f" "%BoxOut%\%%d\")
)
Pause
Exit /B
Если батник в папку с файлами и папки создаются здесь же, можно и так@Echo Off &Cls &SetLocal EnableDelayedExpansion
Set "FileIn=%~dp0*_by_*.*"
Set "BoxOut=%~dp0"
For %%f In ("%FileIn%") Do (
Set "Name=%%~nf"
For /F "delims=._-" %%d In ("!Name:*_by_=!") Do (2>nul Md "%BoxOut%\%%d" &>nul Move "%%f" "%BoxOut%\%%d\")
)
Pause
Exit /B

Shinkiro
26-08-2024, 20:38
DJ Mogarych, Спасибо, почти работает он сам себя в папку запихнул и в тестовой папке был батник 123.bat его тоже запихнуло в папку 123
megaloman, Вариант "батник в папке с файлами", то что доктор прописал. Спасибо! :up




© OSzone.net 2001-2012