Still the same, perhaps
https://en.wikichip.org/wiki/mirc/identifiers/$read
will jog your memory of what you're doing wrong. Things i see from your example
1. For a long time, Windows has blocked creating files in root of c: drive, so this fails if file doesn't exist. If file is in $mircdir it doesn't need the path. If it's in a subfolder of that, the path can be relative.
2. if %variable is null, then your search is for ** which matches the 1st line
3. ALWAYS use the nt switches unless you have a specific reason not to. Without the 'n' it evaluates words beginning with percent or dollar. Without the 't', if the 1st line is a number, that makes $read think that number is a replacement for $lines(filename) and can cause it to ignore the tail end of the file.