0

検出された動きに基づいて毎分 1 ~ 2 ファイルを記録している IP カメラがいくつかあり、タイムスタンプ形式のファイル名に基づいて一連のビデオ ファイルを新規または既存のフォルダーに自動的に移動する方法を探しています。 . これは、カメラが録画していない毎日の特定の時間に Windows 7 で実行されます。

新しく作成されたファイル用のフォルダーがまだ存在しない場合 (通常は、その時間の最初のファイルを除くすべてのファイルに当てはまります)、ファイルが作成された時間 (最終変更日ではない) に基づいて作成されるのが理想的です。

これは、cmd またはおそらく python スクリプトを使用して行うのが最善でしょうか?また、その方法は? 私の推測では、ファイル名から時間/日/月/年を解析し、適切なフォルダーが存在するかどうかを確認し、作成されていない場合は移動する必要があると思います。

ありがとうございました!

ここに画像の説明を入力

4

2 に答える 2

1

これはもう少し簡単かもしれません。システムに合わせて 2 行目と 3 行目を変更し、バッチ ファイルをユーザー フォルダーのどこかに配置すると、スケジュールを設定できます。

最初にいくつかのサンプル ファイルでテストします。

@echo off
set "target=d:\monitoring video\backups"
pushd "c:\camera\videos folder"

for /f "tokens=5 delims=-_" %%a in (' dir /b /a-d ') do (
echo processing "%%a"
md "%target%\%%a" 2>nul
move "%%a" "%target%\%%a" >nul
)
popd

ところで、あなたの要件は、hourフォルダーを作成し、適切なファイルをそこに移動することでした。これは、毎日 01 時以降のファイルが同じ01フォルダーに移動することを意味します。それはあなたが望んでいたものですか?

于 2013-09-22T01:35:53.860 に答える
1

単純なスクリプトで、再帰的ではありません。

    @echo off
@rem USAGE: MoveIt FromDir ToDir

setlocal

    if "%1"=="" goto :Usage
    if "%2"=="" goto :Usage

    pushd "%~2"
    set target=%CD%
    popd

    pushd "%~1"
    set root=%CD%

rem xxYYYY MM DD HH MM SS
rem 1_2013-09-20_25-11-08
rem 0123456789.123456789.

    for %%a in (*) do call :MoveIt "%%a"

    goto :EOF

:MoveIt

    rem Extract just the filename (no path or extension)
    set name=%~n1

    rem Extract the hour
    set hour=%name:~13,2%

    rem Create the directory hourname
    if not exist "%hour%" mkdir "%hour%"

    rem Move the file
    echo move "%~1" "%target%\%hour%"
    goto :EOF

:Usage
    echo Usage: moveByTime.bat  RootDirectory TargetDirectory
    goto :EOF
于 2013-09-20T21:34:21.113 に答える