我的意思是,例如,如果要将文件移动到目录,下一行代码假定文件在那里并尝试打开它,但移动本身尚未完成,从而导致错误?比如需要在两个命令之间包含 ping localhost -n 5?
答案1
如果您使用常规批处理,并且不实现 START 或类似命令来生成新进程,那么它将等待上一个命令完成后再继续。
批处理不会前进到下一个命令,直到它收到上一个命令的退出代码。因此,在基本文件复制的上下文中,它将等待复制命令完成。您可以通过简单地从命令提示符运行复制命令来见证这一点;它不会在复制完成之前给您提示。
现在,您可能会遇到麻烦的是当您启动一个程序时,该程序会产生新的进程来执行您需要等待的工作。
例如,启动器程序可能会在它启动的新进程完成继续批处理之前需要完成的操作之前退出(将退出代码返回给批处理文件,使其继续运行)。
在这些情况下,您需要暂停批处理文件一段时间(并希望它在该时间内完成),或者使用批处理中的循环来监视该过程是否完成(即:使用tasklist
),然后再继续。