BATCH - 等待文件在完成之前完成

时间:2016-04-15 13:25:30

标签: batch-file wait

我有一个命令可以监视某个文件夹中的新文件。这些文件由视频转码器创建,因此被锁定并保持不断增长直至完成。

@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解锁)?目前,当下一个命令试图打开一个不完整的文件时,它会跳闸。

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分: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
)