While the previous answer by jftuga is correct, the more complete answer is as follows:
call rails generate scaffold illness name:string
call ralis generate scaffold ingredient name:string origin_id:integer
You have to place a call in front of each line in the batch file that is an external command triggering a new process if you want the script to continue after each call. So internal commands like DIR and COPY do not require a call. But running a new command prompt or even another batch file, control is handed off completely to that program, unless the word CALL is at the front of the line. Actually, the new command prompt will hand control back to the batch file once you Exit it.
Some programs will pause while they run, but return to the next line of the batch file after they complete. In the following batch file, the script will pause the same after each calling of Notepad and begin after Notepad has exited (both times). So they are effectively the same.
echo It came back.
But when calling another batch file, complete control is passed to the new process unless there is a call in front. So in the following code, the first calling of a bat file will return when completed, but the second will never return, so the last echo line will never run.
echo You will never see this line
I'm not sure how the rails command works, but it seems to be like a batch session. Perhaps it was a batch file. The first two calls to cmd will not return until you type exit in that instance, returning you to the earlier shell. The call is irrelevant. But the third uses the /c switch, which says to execute the command and return automatically. If you want to keep the new cmd session active after you send it a command, you use the /K switch. For more help on this: cmd /?
cmd /c dir
echo You will see this after typing Exit twice to leave two new instances of cmd. The third instance returned automatically.