У меня есть файлы с камеры 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.*"
}