This happens if the file is no longer where iTunes expects to find it. Possible causes are that you or some third party tool has moved, renamed or deleted the file, or that the drive it lives on has had a change of drive letter. It is also possible that iTunes has changed from expecting the files to be in the pre-iTunes 9 layout to post-iTunes 9 layout,or vice-versa, and so is looking in slightly the wrong place.
Select a track with an exclamation mark, use Ctrl-I to get info, then cancel when asked to try to locate the track. Look on the summary tab for the location that iTunes thinks the file should be. Now take a look around your hard drive(s). Hopefully you can locate the track in question. If a section of your library has simply been moved, or a drive letter has changed, it should be possible to reverse the actions.
Alternatively, as long as you can find a location holding the missing files, then you should be able to use my FindTracks script to reconnect them to iTunes .
Depending the way you manage your library.
I had an issue and I've lost hours and hours then I finnally fix it in 5 seconds. Maybe it's not applying to you but maybe somebody will find this post and resolve his problem...
My case :
There's not a single song in my laptop, all my music is on a hard drive connected to my router with USB. And this drive appear on my laptop My computer via Share Port Utility.
I do not use iTune organizing folder option since I don't wont to copy anything on my limited SSD laptop drive and I really don't like the way iTune organize librairy.
Everything has been working fine for months, but recently iTune couldn't locate my songs. I was dissapointed because even though I could just delete everything in iTune and copy/paste my songs from my Network HDD I did not want to do so and loose "Play count" wich I use to get music I listen to the most synced with my iPhone through smart playlist.
So what I did was simply clicking on a song, then click on LOCATE, then I find the song. This was working for this song but I didn't want to do it for 70 000 songs... so I close iTunes, wait a few seconds then open it again, it will locate everything close of your first songs location path.
It worked good for me... I hope this can help somebody out there!