0

我有一些 IP 摄像机每分钟根据检测到的移动记录 1-2 个文件,并且正在寻找一种方法来根据时间戳格式的文件名自动将一组视频文件移动到新的或现有的文件夹中. 这将在 Windows 7 中每天特定时间在摄像机未录制时完成。

如果新创建的文件的文件夹不存在(通常情况下,除了每小时的第一个文件之外的所有文件),理想情况下,它会根据创建文件的时间(不是最后一次修改)来创建。

这最好通过 cmd 或 python 脚本来完成,如何?我的猜测是我必须从文件名中解析小时/日/月/年,检查是否存在适当的文件夹,如果它没有创建一个,然后移动它。

谢谢!

在此处输入图像描述

4

2 回答 2

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 回答
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 回答