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

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

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

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

2 ответа2

0

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

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

0

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

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

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

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

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

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

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

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

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