1

Под этим я подразумеваю, например, файл, который нужно переместить в каталог, и следующая строка кода предполагает, что файл находится там, и пытается открыть его, но само перемещение не завершено, что приводит к ошибке ? Вроде необходимости включать ping localhost -n 5 между двумя командами?

1 ответ1

4

Если вы используете обычный пакет и не реализуете START или что-либо подобное для порождения новых процессов, тогда он будет ждать завершения предыдущей команды, прежде чем продолжить.

Пакет не перейдет к следующей команде, пока не получит код завершения предыдущей команды. Таким образом, в контексте базовой копии файла он будет ждать завершения команды копирования. Вы можете убедиться в этом, просто запустив команду «Копировать» из командной строки; он не вернет вам приглашение, пока не завершит копирование.

Теперь у вас могут возникнуть проблемы, когда вы запускаете программу, которая порождает новые процессы, которые выполняют работу, которую вам нужно ждать.

Например, программа запуска может завершиться (возвращая код завершения в пакетный файл, вызывая его продолжение), прежде чем новый процесс завершит выполнение того, что вам нужно сделать, прежде чем продолжить пакет.

В этих случаях вам нужно либо приостановить пакетный файл на некоторое время (и надеяться, что он завершится в течение этого времени), либо использовать цикл в пакете для отслеживания завершения процесса (т. tasklist помощью списка задач ) до того, как продолжается.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .