У меня есть файлы с камеры GoPro Fusion, которые представляют изображения и фильмы. Имена файлов выглядят как
GP (for “GoPro”) (two more letters of no particular significance) (a series of digits; maybe four or six digits) . (a period) (an extension)
Некоторые из расширений являются общими, например JPG , MP4 и WAV ; другие необычны.
Некоторые примеры имен файлов: GPFR0000.jpg , GPBK0000.jpg , GPFR0000.gpr , GPFR1153.MP4 , GPFR1153.THM и GPBK142857.WAV . Но расширения не имеют отношения к этому вопросу.
Для каждого изображения и фильма есть набор файлов, имена которых имеют одинаковые серии цифр непосредственно перед расширением.
Так, например, GPFR1153.LRV и GPBK1153.MP4 принадлежат к тому же набору.
Я хочу, чтобы все файлы из каждого набора были сгруппированы в каталог с именем GP за которым следуют серии цифр.
Например, если у меня есть
GPFR0000.jpg
GPBK0000.jpg
GPFR0000.gpr
GPFR0000.gpr
GPFR1153.LRV
GPFR1153.MP4
GPFR1153.THM
GPBK1153.WAV
GPBK1153.MP4
GPQZ142857.FOO
все в одном каталоге, результат должен быть
GP0000\GPFR0000.jpg
GP0000\...
GP1153\GPFR1153.LRV
GP1153\GPFR1153.MP4
GP1153\...
GP142857\GPQZ142857.FOO
Возможно ли это с помощью скрипта (для Windows 10)? Я обнаружил этот (PowerShell) сценарий mousio в Recursively перемещении тысяч файлов в окна подпапок, но он решает немного другую проблему, и я хотел бы помочь адаптировать его к моим требованиям (я художник, а не программист).
# if run from "P:\Gopro\2018", we can get the image list
$images = dir *.jpg
# process images one by one
foreach ($image in $images)
{
# suppose $image now holds the file object for "c:\images\GPBK1153.*"
# get its file name without the extension, keeping just "GPBK1153"
$filenamewithoutextension = $image.basename
# group by 1 from the end, resulting in "1153"
$destinationfolderpath =
$filenamewithoutextension -replace '(....)$','\$1'
# silently make the directory structure for "1153 GPBK1153"
md $destinationfolderpath >$null
# move the image from "c:\images\1234567890.jpg" to the new folder "c:\images\1\234\567\890\"
move-item $image -Destination $destinationfolderpath
# the image is now available at "P:\Gopro\2018\1153\GPBK1153.*"
}
