2016-04-15 6 views
1

У меня есть команда, которая следит за определенной папкой для новых файлов. Эти файлы создаются видеокодеком, поэтому они блокируются и продолжают расти в размерах до завершения.BATCH - подождите, пока файл будет заполнен до получения

@echo OFF 
:loop 
if exist "E:\OUT\*.mxf" (
for %%i in ("E:\OUT\*.mxf") DO (
C:\bmx\bmxtranswrap -o "E:\DPP_create\DPP_OUT\%%~ni.mxf" -t as11op1a -y 09:59:50:00 --afd 10 "%%i" 
ping -n 5 localhost >nul 
del "%%i" 
) 
) 
ping -n 5 localhost >nul 
goto :loop 

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

Любые советы? Благодарю.

ответ

0

Пока вы правы в том, что ваш транскодер заблокировал файл до его завершения, тогда решение на самом деле простое.

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

Примечание:

  • Вам не нужно свой внешний IF заявление.
  • Вы можете использовать бесконечный цикл FOR/L вместо цикла GOTO
  • Я не понимаю, почему вам нужна задержка перед вашим DEL, но я все равно сохранил его.
@echo OFF 
for /l %. in() do (
    for %%i in ("E:\OUT\*.mxf") do 2>nul((call)>>"%%i") && (
    C:\bmx\bmxtranswrap -o "E:\DPP_create\DPP_OUT\%%~ni.mxf" -t as11op1a -y 09:59:50:00 --afd 10 "%%i" 
    ping -n 5 localhost >nul 
    del "%%i" 
) 
    ping -n 5 localhost >nul 
) 
Смежные вопросы