Enquanto a resposta anterior do jftuga estiver correta, a resposta mais completa é a seguinte:
@echo off
call rails generate scaffold illness name:string
call ralis generate scaffold ingredient name:string origin_id:integer
Você precisa colocar uma chamada na frente de cada linha no arquivo em lote que é um comando externo que aciona um novo processo se você quiser que o script continue após cada chamada. Portanto, comandos internos como DIR e COPY não requerem uma chamada. Mas executando um novo prompt de comando ou até mesmo outro arquivo de lote, o controle é entregue completamente para esse programa, a menos que a palavra CALL esteja na frente da linha. Na verdade, o novo prompt de comando retornará o controle para o arquivo em lote assim que você sair dele.
Alguns programas fazem uma pausa enquanto são executados, mas retornam à próxima linha do arquivo de lote após a conclusão. No arquivo de lote a seguir, o script fará uma pausa após cada chamada do Bloco de Notas e começará depois que o Bloco de Notas for encerrado (ambas as vezes). Então eles são efetivamente o mesmo.
notepad.exe
call notepad.exe
echo It came back.
Mas ao chamar outro arquivo de lote, o controle completo é passado para o novo processo, a menos que haja uma chamada na frente. Portanto, no código a seguir, a primeira chamada de um arquivo bat retornará quando concluída, mas a segunda nunca retornará, portanto, a última linha de eco nunca será executada.
chame firstBatch.bat
SecondBatch.bat
eco Você nunca verá esta linha
Não tenho certeza de como o comando rails funciona, mas parece ser uma sessão em lote. Talvez tenha sido um arquivo em lotes. As duas primeiras chamadas para o cmd não retornarão até que você digite exit nessa instância, retornando ao shell anterior. A chamada é irrelevante. Mas o terceiro usa a opção / c, que diz para executar o comando e retornar automaticamente. Se você deseja manter a nova sessão cmd ativa depois de enviar um comando, use a opção / K. Para mais ajuda sobre isso: cmd /?
cmd
call 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.