The following script does something similar and could perhaps be adapted to your own requirements.
Code:
; a translation to ahk of an js-example in the iTunes SDK documentation
#SingleInstance, Force
ScriptName = RemoveDeadTracks
lng_DeleteDeadTrack = Delete this track from library?
lng_DeletedTracks = Deleted
lng_PleaseWait = Please wait
lng_SearchDeadTracks = Searching for tracks that lack the original file.
lng_RemoveDeadTracks = Remove not available (dead) tracks
lng_CheckedTracks = Checked
#Include, com.ahk ; by Sean: http://www.autohotkey.com/forum/topic22923.html
COM_Init()
iTunesApp := COM_CreateObject("iTunes.Application") ;Create the object
deadTracks = 0
deletedTracks = 0
numTracks := COM_Invoke(iTunesApp, "LibraryPlaylist.Tracks.Count")
totalTracks := numTracks
While (numTracks != 0)
{
checkedTracks := A_Index
Progress, C0 zh0 fs10, %lng_SearchDeadTracks%`n%lng_PleaseWait%... (%numTracks%),, %ScriptName% %lng_4iTunes% %ScriptVersion%, MS Sans Serif
Sleep, 1
tempVar = LibraryPlaylist.Tracks.Item(%numTracks%).Kind
If COM_Invoke(iTunesApp, tempVar) = 1 ; (1) Library playlist
{
tempVar = LibraryPlaylist.Tracks.Item(%numTracks%).Location
If COM_Invoke(iTunesApp, tempVar) = ""
{
Progress, Hide
deadTracks ++
tempVar1 = LibraryPlaylist.Tracks.Item(%numTracks%).Artist
tempVar1 := COM_Invoke(iTunesApp, tempVar1)
tempVar2 = LibraryPlaylist.Tracks.Item(%numTracks%).Name
tempVar2 := COM_Invoke(iTunesApp, tempVar2)
MsgBox, 262179, %ScriptName% %lng_4iTunes% %ScriptVersion%, %tempVar1% - %tempVar2%`n`n%lng_DeleteDeadTrack%
Progress, Show
IfMsgBox, Yes
{
tempVar = LibraryPlaylist.Tracks.Item(%numTracks%).Delete
COM_Invoke(iTunesApp, tempVar)
deletedTracks ++
}
IfMsgBox, Cancel
Break
}
}
numTracks --
}
Progress, Off
MsgBox, 262208, %ScriptName%, %lng_RemoveDeadTracks%`n`n%lng_CheckedTracks%:`t`t%checkedTracks%/%totalTracks%`n%lng_DeletedTracks%:`t`t%deletedTracks%/%deadTracks%
COM_Release(iTunesApp)
COM_Term()
ExitApp