You could spend some time scripting this up with PowerShell, which should already be installed on your PC.
I've written this off the top of my head (currently on a Linux box, so no way to test):
get-childitem -path c:\ -recurse -filter "*.jpg","*.png","*.NEF" -exclude "c:\windows","c:\programdata\*","c:\program files\*","c:\program files(x86)\*" | % { move-item -path $_ -destination c:\mypicturefolder -whatif }
The "-whatif" parameter means it should just show you what it would do, if it doesn't blow up because I've made a mistake.
You could possibly somehow get the date the picture was taken and organise into subfolders based on date. That's a bit more complex though, I'd have to check it out. However, it'd be something like:
$datesarray=@()
$destFolder = c:\mypicturefolder
if(!(test-path $destFolder){
new-item -path $destFolder -itemtype directory
}
foreach ($file in get-childitem -path c:\ -recurse -filter "*.jpg","*.png","*.NEF" -exclude "c:\windows","c:\programdata\*","c:\program files\*","c:\program files(x86)\*")
{
if($file.takenDate -notin $datesaray){
$datesarray+=,@($file.takenDate)
new-item -path $destFolder/$file.takenDate -itemtype directory
}
move-item -path $file.whateverTheFullPathPropertyIsCalled -destination $destFolder\$file.takenDate
}
Granted, that won't work as is, but you get the idea. There are plenty of Powershell tutorials on-line and the inbuilt help is fairly good to. Look for 'PowerShell ISE' on your PC. The get-member commandlet is your friend.