The first each loop does change srvops, it adds a redirect from "path" to "dest" (literally).
Macros are expanded prior to evaluation. This seems strange while typing into the repl because we tend to think of macros as functions most of the time. macex and macex1 are useful.
Every iteration of the loop performs the same defopr.
I've come across this problem of wanting to run macros at runtime in order to evaluate the args first, but I think it is due to a misunderstanding of macros. This works, but it's an ugly hack: