Правда ли, что иногда для пакетных файлов требуется перерыв для правильного выполнения команд?

270
Daniel

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

1
Хорошо, если файл имеет размер 4 ГБ, тогда да, он не может открыть файл, если он все еще переносится. Одним из способов является использование `ping 127.0.0.1 -n 6> nul` Ofcourse 4GB займет больше 5 секунд. DOS не ждет завершения 1 команды. Dylan Rz 7 лет назад 1
Хорошо, это то, что мне было интересно, если он проверяет, завершена ли команда перед переходом к следующему Daniel 7 лет назад 0
Нету Дос не будет ждать 1 команду, чтобы закончить. Тогда вам, вероятно, придется использовать оператор If else `Если файл xx существует - перейдите к. Вы поняли идею. Dylan Rz 7 лет назад 0

1 ответ на вопрос

4
Ƭᴇcʜιᴇ007

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

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

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

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

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

Очень хорошо объяснил Daniel 7 лет назад 0