I too had the same question.
Basically, this can't be done natively in RouterOS, but you could make a workaround (pretty messy though).
The solution I came up with was to parse the dhcp log entries and the filename based on specific data retrieved.
First, you could have a "catch-all" filename sent that simply tells the client to reboot continuously.
Then, run a script every 1 sec. to parse the dhcp logs. Find the IP, MAC, and bus-id info.
After deciding what file name to push, create a new dhcp network entry with the IP/32, and a new dhcp lease with IP and MAC specified. Have this new lease use your desired dhcp filename entry.
Wait until the client boots with specified filename.
After this, you could parse the dhcp log again, looking for info that the network/lease could be removed.
NOTE: I'm not currently using the above method. This is only a solution in theory that should achieve your end goal. Again, it's messy. There might be easier ways (scripting, parsing, etc...).
Hope this helps.