windows exe:
http://en.sourceforge.jp/projects/sfnet_flatfolder/
or AHK:
fileselectfolder,MyFold,::{20d04fe0-3aea-1069-a2d8-08002b30309d}
SetWorkingDir, %MyFold%
loop, *.*,0,1
{
parentpath := RegExReplace(A_LoopFileDir,"\\","-")
;StringReplace, parentpath, A_LoopFileDir, \,-,All
newname = %parentpath%-%A_LoopFileName%
;msgbox %newname%
If a_loopfiledir <>
filemove, %a_loopfilefullpath%,%newname%
}
loop, %myfold%\*.*,2,1
fileremovedir, %a_loopfilefullpath%,1
exitapp
or use Directory Opus
or Powershell
(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}
or Batch (as mentioned above)
or the manual search, cut and paste as mentioned above
There are many ways, depending on your skill and inclinations you can choose any of these, and refine according to your needs.
You might need this Remove Empty Directories after the above operation