2016-04-15 70 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 
) 
相关问题