Windows CMD - дождитесь окончания копирования файла и запустите команду

744
John Him

Я пытаюсь выполнить команду после обнаружения изменения файла. Моя проблема в том, что программа, которую я использую, мгновенно действует, когда файл создается, но копирование не завершено.

Прямо сейчас я использовал timeout /t 180 /nobreakсвой сценарий для временного исправления, а затем запускал нужные мне команды, но это не будет работать для каждого файла, который я делаю, для некоторых это займет больше 180 секунд.

Я пытаюсь выполнить передачу видеофайлов по локальной сети в общую папку, в которой ПК с общей папкой обнаруживает изменение / создание файла, а затем ожидает полного переноса файла и запускает .bat / .cmd.

Есть какой-либо способ сделать это. Любая помощь с благодарностью. Спасибо!

0

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

0
Alex

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

PS Syncthingпо умолчанию синхронизируется с предварительно установленными временными окнами, но если вам нужна немедленная передача, вы можете использовать сопутствующую программу, которая вызывает syncthing-inotify, таким образом, все, что было изменено / создано / удалено в исходном местоположении, будет немедленно реплицировано на целевой ПК.

Я попробую синхронизировать, спасибо за предложение, Алекс. Я заглянул на сайт, и эта программа напоминает мне о синхронизации битов. Я сейчас на мобильном, но попробую. John Him 7 лет назад 0
@JohnHim Да, он похож на bitorrent-sync, но, в отличие от него, с открытым исходным кодом, позволяет запускать собственные серверы обнаружения и полагаться на серверы или напрямую p2p-соединения, хорошо поддерживается и работает практически на любых устройствах и платформах. Alex 7 лет назад 0
0
LPChip

Вы должны смотреть на это с другой точки зрения.

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

Итак, вы хотите выполнить оба действия из одного и того же сценария.

Это дает вам 2 варианта:

Удаленное выполнение

Программа PSExec (может быть загружена из Microsoft) может выполнять программу на целевой машине, если она была запущена с достаточными правами. Его можно использовать для запуска программы на удаленном компьютере после завершения копирования.

Обратная копия

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

Я использовал PSExec в прошлом, и это очень полезно. Я пытался избежать использования программы со стороны отправителя в сетевой папке, так как передача будет выполняться несколькими компьютерами. Я попробую PSExec на одном ПК и протестирую его. Спасибо за предложение. John Him 7 лет назад 0

Похожие вопросы