Seu script define a variável "file" apenas para o nome do arquivo (sem caminho). Então você tenta abrir o nome do arquivo (sem caminho). No meu sistema, recebi um erro "O sistema não pode encontrar o arquivo ...".
Isso me leva a acreditar que, no seu script, a linha do arquivo de localização usa o caminho atual do arquivo bat, mas o arquivo de leitura não. Meu palpite é por causa do "*" na linha de localização.
Eu consertei simplesmente alterando sua linha de arquivo de localização para:
for /r %%i in (*.txt) do set file=%%i
Agora, a variável "file" será o caminho completo + filename e o arquivo em lote encontrou meu arquivo e leu o texto.