在批处理文件中编写简单命令列表时遇到问题

在批处理文件中编写简单命令列表时遇到问题

我正在尝试在一个批处理中运行一些简单的批处理命令。
实际上,每个命令都是一个批处理命令,如下所示:

 rails generate scaffold illness name:string
 rails generate scaffold ingredient name:string origin_id:integer

现在,我的批处理文件不再运行所有 30 条命令,而是仅运行第一个命令并返回到提示行。所以我必须手动运行它。

答案1

您必须将该词call放在批处理文件的前面...

@echo 关闭
调用 rails 生成脚手架疾病名称:string
调用 ralis 生成脚手架成分名称:string origin_id:integer

这假设“rails”实际上是rails.bat。

答案2

虽然 jftuga 之前的回答是正确的,但更完整的答案如下:

@echo off
call rails generate scaffold illness name:string
call ralis generate scaffold ingredient name:string origin_id:integer

你必须放置一个称呼如果您希望脚本在每次调用后继续,则批处理文件中每行的前面都有一个外部命令,用于触发新进程。因此,DIR 和 COPY 等内部命令不需要调用。但是,运行新的命令提示符或甚至另一个批处理文件时,控制权将完全移交给该程序,除非出现以下字称呼位于行首。实际上,一旦您出口它。

有些程序运行时会暂停,但完成后会返回到批处理文件的下一行。在下面的批处理文件中,脚本会在每次调用记事本后暂停,并在记事本退出后开始(两次)。所以它们实际上是相同的。

notepad.exe
call notepad.exe
echo    It came back.

但是当调用另一个批处理文件时,除非前面有一个调用,否则完全控制权将传递给新进程。因此在下面的代码中,bat 文件的第一次调用将在完成时返回,但第二次调用永远不会返回,因此最后一行 echo 永远不会运行。call firstBatch.bat SecondBatch.bat echo 你永远不会看到这一行

我不确定 rails 命令是如何工作的,但它似乎像是一个批处理会话。也许它是一个批处理文件。前两次对 cmd 的调用不会返回,直到你在该实例中键入 exit,返回到之前的 shell。称呼无关紧要。但第三个使用 /c 开关,表示执行命令并自动返回。如果您想在向新 cmd 会话发送命令后保持其处于活动状态,请使用 /K 开关。有关此内容的更多帮助:命令 /?

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.

相关内容