the point of flags (-text or --codeword type stuff) is to be able to have them or not have them, and in any order. Something like grep, for example, you can have or not have various flags in whatever order and it works fine because the front end of that program does a bunch of heavy parsing of the arguments.
If you want a rigid order, eg program.exe -f filename -x option such that -x option and -f filename won't work (order reversed) then there isnt any point to having the flags at all! Just say program.exe filename option instead! Then you don't need the extra flag bits at all. If you can have 2 behaviors for one arg, via a flag, then you need it (say you have -f filename or -z filename, and the f/z tells you to DO something different, then you need the flags again).
In windows (and unix!? I forget?) where spaces are allowed in folder names, you have to watch out for that as it is considered to be two arguments and the space itself is lost. Quotes around the arg may work, I am not sure 100% off the top of my head, but watch out for that issue anyway.