2012-08-02 97 views
1

我试图让这个批处理脚本检查恢复,它没有处理,如果一个文件之前,并继续与它没有。即如果它处理了文件,则跳到下一个文件。我需要做什么才能做到这一点。感谢批处理脚本与检查选项

@echo off 
setlocal enabledelayedexpansion 
set EXE_FILE=E:\opencv\build\bin\Release\blobtrack_sample.exe 
set INPUT_PATH=E:\Glasgow\Test\ 
set TRACKS_PATH=E:\Glasgow\Tracks\ 
set COUNT=0 
pushd %INPUT_PATH% 
for %%f in (*) do if %%f neq %~nx0 (
    set /a COUNT+=1 
    echo Processing %%f, track=%%~nf.txt, btavi=test!COUNT!%%~xf 
    %EXE_FILE% fg=FG_0S bd=BD_CC bt=CCMSPF btpp=None bta=Kalman btgen=RawTracks track=%TRACKS_PATH%\%%~nf.txt FGTrainFrames=125 %%f 
) 
popd 

回答

0

您可以检查%OUTPUT_PATH%\%%~nf.avi是否存在:

for %%f in (*) do if %%f neq %~nx0 if not exists "%OUTPUT_PATH%\%%~nf.avi" (
    set /a COUNT+=1 
    echo Processing %%f, track=%%~nf.txt, btavi=test!COUNT!%%~xf 
    %EXE_FILE% fg=FG_0S bd=BD_CC bt=CCMSPF btpp=None bta=Kalman btgen=RawTracks track=%TRACKS_PATH%\%%~nf.txt FGTrainFrames=125 btavi=%OUTPUT_PATH%\%%~nf.avi %%f 
) 

但是,这有一个小问题。如果在书面文件的中间处理中断了一些文件,则会有半个文件不会再次处理,因为您将存在完成

一个更可靠的方法是写一个临时文件,然后再重命名为:

%EXE_FILE% fg=FG_0S bd=BD_CC bt=CCMSPF btpp=None bta=Kalman btgen=RawTracks track=%TRACKS_PATH%\%%~nf.txt FGTrainFrames=125 btavi=%OUTPUT_PATH%\temp.avi %%f 
ren "%OUTPUT_PATH%\temp.avi" "%%~nf.avi" 
+0

如果您选择的临时文件名不会与您的输出文件名冲突,那应该都很好。一个临时文件夹有一个问题,即一个简单的重命名不足,并且该移动可能跨越不同的卷(我不知道你的文件夹是如何设置的)。但是,你可以。我只是给出了一个建议,你不必完全按照我写的代码来使用代码。 – Joey 2012-08-02 12:30:17

+0

是的,重命名应该在循环中。 – Joey 2012-08-02 13:44:53

+0

你从哪里得到它,为什么?我不是一个心灵。 – Joey 2012-08-02 13:49:57

0

你可以检查,看看你的输出文件已经存在

for %%f in (*) do if %%f neq %~nx0 (
    if not exist "%OUTPUT_PATH%\%%~nf.avi" (
    set /a COUNT+=1 
    echo Processing %%f, track=%%~nf.txt, btavi=test!COUNT!%%~xf 
    %EXE_FILE% fg=FG_0S bd=BD_CC bt=CCMSPF btpp=None bta=Kalman btgen=RawTracks track=%TRACKS_PATH%\%%~nf.txt FGTrainFrames=125 btavi=%OUTPUT_PATH%\%%~nf.avi %%f 
) 
) 

这似乎如果你的IN(*)子​​句被限制在寻找一个特定的扩展名,它可能会更有效率。

+1

您可以在(* .foo)中使用'for %% f'来仅选择'.foo'文件。这样,您不必检查是否意外地抓取了批处理文件并尝试处理它。 – Joey 2012-08-02 12:28:53

+0

好的。它实际上是用于(* .avi)'中的%% f。谢谢 – Booboo 2012-08-02 12:45:52