My thoughts in no particular order – w/o having looked at /understood the patch (i'm not familar with most windows batch file syntax)...
BTW, I set this as blocker, as we cannot release Solr 7 at the same time like Java 9 and it won't work.
I don't think "solr + windows + jdk9" is an important enough use case to warrant holding up lucene/solr 7. We can release note that solr.cmd startup script doesn't work in that permutation and focus on fixing later (if anyone is really hardcore about using solr + windows + jdk9 they can probably work around using the solr.cmd script)
The GC_LOG_OPTS used as it was before the change on Java <= 8, but for Java 9 it is ignored. I have no better idea how to do this. IMHO, this is better than not working at all! I added documentation for this.
My personal opinion is that it would be better to continue to support things as best we can for existing solr users who may upgrade solr w/o caring about jdk9 at all – ie: keep supporting/using GC_LOG_OPTS – but in the special in the case where they use jdk9 and try to specify a value for the GC_LOG_OPTS ... we should hard fail w/message that solr can't support GC_LOG_OPTS when using jdk9.
I believe you said in your current patch you "ignored" GC_LOG_OPTS when using jdk9? ... i think that's a mistake, as existing solr users who may have already set GC_LOG_OPTS and then later upgrade to jdk9 will get confusing silently different behavior. better to fail fast and be clear that they can't do that (unless/until we find a better solution)