2012-08-02 75 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