What application are you sending the key strokes to?
This doesn't seem to be a WinBatch problem, per se, but rather a problem with the application receiving the key strokes possibly misinterpreting what's being sent. I doubt, tho, that the "\22" is being misinterpreted as an escape sequence, since the value to be substituted at that point would be a double quote character, which doesn't seem to be what's being placed into the file open dialog. Instead, I'm guessing that there's some sort of delay between when the "!fo" is received and when the file open dialog is actually present and ready to receive input, and the leading part of the path simply isn't being received by the appropriate control on the open/save dialog.
In all cases, wherever possible, don't sent key strokes when you have the possibility of using the Control Manager extender to more precisely automate the control & data entry for an application.