SortMoviesByGenre creates links to movies, placing them in folders of genre, based on parts of their filename.


I'm not sure how standardized your foldernames are. I added an option to separate the title and genre from the rest of the folder name by a user defines text, but maybe separating by genre would be better? I could add all the IMDB genres to the file, and use that to split the folder names.
Download and install
AutoHotkey to run the script.
Save the script to a text file called SortMoviesByGenre.ahk and double click to run.
Skrommel
;SortMoviesByGenre.ahk
; Create links to movies, placing them in folders of genre, based on parts of their filename
;Skrommel @2017
#SingleInstance,Force
#NoEnv
SetBatchLines,0
IniRead,moviefolder,SortMoviesByGenre.ini,Settings,moviefolder
IniRead,sortedfolder,SortMoviesByGenre.ini,Settings,sortedfolder
IniRead,separator,SortMoviesByGenre.ini,Settings,separator
If moviefolder=ERROR
moviefolder=C:\Movies
If sortedfolder=ERROR
sortedfolder=C:\Sorted
If separator=ERROR
separator=.DVD,.CAM,.XVID
Gui,Add,Text,xm,Folder with movies
Gui,Add,Edit,xm w300 vmoviefolder,% moviefolder
Gui,Add,Button,x+5 w50 GBROWSEMOVIE,&Browse
Gui,Add,Text,xm,Folder to put links sorted by genre into
Gui,Add,Edit,xm w300 vsortedfolder,% sortedfolder
Gui,Add,Button,x+5 w50 GBROWSESORTED,B&rowse
Gui,Add,Text,xm,Text separating title and genre from the rest of the name.`nUse , between separators
Gui,Add,Edit,xm w300 vseparator,% separator
Gui,Add,Button,xm w50 GSORT +Default,&Sort
Gui,Add,StatusBar,,Skrommel @ 2017
Gui,Show,,SortMoviesByGenre
Return
BROWSEMOVIE:
Loop
{
FileSelectFolder,newmoviefolder,% "*" moviefolder,3,Select folder with movies
If ErrorLevel=1
Return
IfExist,% newmoviefolder
Break
MsgBox,% "The movie folder could not be found!"
}
GuiControl,,moviefolder,% newmoviefolder
Return
BROWSESORTED:
Loop
{
FileSelectFolder,newsortedfolder,% "*" sortedfolder,3,Select folder with movies
If ErrorLevel=1
Return
IfExist,% newsortedfolder
Break
MsgBox,% "The sorted folder could not be found!"
}
GuiControl,,sortedfolder,% newsortedfolder
Return
SORT:
Gui,Submit,NoHide
IfNotExist,% moviefolder
{
MsgBox,% "The movie folder could not be found!"
Return
}
IniWrite,% moviefolder,SortMoviesByGenre.ini,Settings,moviefolder
IniWrite,% sortedfolder,SortMoviesByGenre.ini,Settings,sortedfolder
IniWrite,% separator,SortMoviesByGenre.ini,Settings,separator
SB_SetText("Sorting moivies into " sortedfolder "...")
Loop,% moviefolder "\*.*",2,0
{
first=999 ;Extract title and genre
Loop,Parse,separator,`,
{
StringGetPos,pos,A_LoopFileName,% A_LoopField
If (pos>0 And pos<first)
first:=pos
}
StringLeft,titlegenre,A_LoopFileName,% first
StringSplit,part_,titlegenre,`. ;Extract genre
genre:=part_%part_0%
title= ;Extract title
Loop,% part_0-1
title:=title part_%A_Index% " "
title=% title
FileCreateDir,% sortedfolder "\" genre ;Create link
FileCreateShortcut,% A_LoopFileLongPath,% sortedfolder "\" genre "\" title ".lnk"
}
SB_SetText("Finished sorting movies into " sortedfolder)
Return
GuiClose:
ExitApp