Spigot/bukkit/etc. shouldn't make a difference in this particular case. I just happened to have a Spigot setup to test with.
This is what I was looking at but think that I am failing to execute.
Before you get too excited about it, it won't work for what you want. You would use the start command on the line that starts java itself. I gave an example already, but in your case it would be:
start "" java -Xms4G -Xmx4G -jar forge-1.8-11.14.4.1563-universal.jar nogui
This the batch file would continue while the Minecraft server started and ran. This would turn your one problem into two, as in addition to figuring out how to send commands to the running minecraft server, you would need to determine how to check if the server is still running. (Where before, that it was not was implied by the next line of batch executing).
How did you get it to implement the rules after loading? That is exactly what I am trying to accomplish.
It's in the code block, it was started with the command
java -jar spigot-1.11.2.jar < runcmd.txt
which sent the contents of runcmd.txt to the new minecraft instance's standard input. Normally standard input is the keyboard. Once the server starts it starts reading lines from standard input which it will be reading from that file. In this case runcmd.txt contained:
gamerule doFireTick false
gamerule doTileDrops true
This is what my previous batch script did, it just created the text file beforehand from the batch script.
As I said though, this means you can't use the keyboard to type commands directly into the server console, which would be annoying.
You might look into using RCON utilities to use the Remote Console feature that the server implements.